一个完整的大作业

 

获取中国乒乓球协会官方网站(http://www.ctta.cn/)的所有协会动态信息

 

 要求

选一个自己感兴趣的主题。

网络上爬取相关的数据。

进行文本分析,生成词云。

对文本分析结果解释说明。

写一篇完整的博客,附上源代码、数据爬取及分析结果,形成一个可展示的成果。

 

 

 

1、首先使用浏览器打开中国乒乓球协会官方网站动态的网页http://www.ctta.cn/,在空白地方点击鼠标右键查看源代码。

 

 

 

 2、测试获取标题、标题链接、及发布时间代码

 

import requests
from bs4 import BeautifulSoup
from datetime import datetime
import re

url = 'http://www.ctta.cn/'
res = requests.get(url)
res.encoding='utf-8'   
soup=BeautifulSoup(res.text,'html.parser')



for news in soup.select('.list021'):
    if len(news.select('a'))>0:
        title=news.select('a')[0].text#标题,选取<a>的全部内容,取出list列表第一个元素,选取当中title文本
        time=news.select('span')[0].text#时间,选取<span>的全部内容,取出list列表第一个元素,选取当中的非代码文本内容  
        url=news.select('a')[0]['href']#链接,选取<a>的全部内容,取出list列表第一个元素,选取当中href文本
        print("标题:",title,"\t\t\t\t\t\t时间:",time,"\t\t\t\t\t\t\t\t链接:",url)

 

 3获取标题标题链接

 

import requests
from bs4 import BeautifulSoup
from datetime import datetime
import re

url = 'http://www.ctta.cn/'
res = requests.get(url)
res.encoding='utf-8'   
soup=BeautifulSoup(res.text,'html.parser')



for news in soup.select('.pic'):
    if len(news.select('a'))>0:
        title=news.select('a')[1].text#标题,选取<a>的全部内容,取出list列表第一个元素,选取当中title文本
        url=news.select('a')[0]['href']#链接,选取<a>的全部内容,取出list列表第一个元素,选取当中href文本
        print("标题:",title,"\t\t\t\t\t\t\t\t链接:",url)

 

 4、取其中一条信息详情

 

import requests
from bs4 import BeautifulSoup
import re
aopaurl='http://www.ctta.cn/xwzx/ppxw/2017/1020/160276.html'
res=requests.get(aopaurl)
res.encoding='utf-8'
soupn =BeautifulSoup(res.text,'html.parser')
text=soupn.select('.content')[0].text 
print(text)

 

 5、生成词云

 

import requests
import jieba
from bs4 import BeautifulSoup
import re

url = 'http://www.ctta.cn/'
res = requests.get(url)
res.encoding='utf-8'   
soup=BeautifulSoup(res.text,'html.parser')



for news in soup.select('.main_05_01'):
    if len(news.select('h4'))>0:
        p=news.select('h4')[0].text
        print(p)
        break

words = jieba.lcut(p)
ls = []
counts = {}
for word in words:
    ls.append(word)
    if len(word) == 1:
        continue
    else:
        counts[word] = counts.get(word,0)+1
items = list(counts.items())
items.sort(key = lambda x:x[1], reverse = True)
for i in range(10):
    word , count = items[i]
    print ("{:<5}{:>2}".format(word,count))

 

posted on 2017-11-02 17:38  09陈雨雨  阅读(210)  评论(0编辑  收藏  举报