1、选一个自己感兴趣的主题。
2、用python 编写爬虫程序,从网络上爬取相关主题的数据。
3、对爬了的数据进行文本分析,生成词云。
4、对文本分析结果进行解释说明。
5、写一篇完整的博客,描述上述实现过程、遇到的问题及解决办法、数据分析思想及结论。
6、最后提交爬取的全部数据、爬虫及数据分析源代码。
import requests from bs4 import BeautifulSoup import re import time import sys import pandas as pd def getHTMLText(url,k): try: if(k==0):kw={} else: kw={'start':k,'filter':''} r = requests.get(url,params=kw,headers={'User-Agent': 'Mozilla/4.0'}) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: print("Failed!") def getData(html,movieInfo): soup = BeautifulSoup(html, "html.parser") movieList=soup.find('ol',attrs={'class':'grid_view'})#找到第一个class属性值为grid_view的ol标签 for movieLi in movieList.find_all('li'):#找到所有li标签 data = [] #得到电影名字 movieHd=movieLi.find('div',attrs={'class':'hd'})#找到第一个class属性值为hd的div标签 movieName=movieHd.find('span',attrs={'class':'title'}).getText()#找到第一个class属性值为title的span标签 #也可使用.string方法 data.append(movieName) #得到电影的评分 movieScore=movieLi.find('span',attrs={'class':'rating_num'}).getText() data.append(movieScore) #得到电影的评价人数 movieEval=movieLi.find('div',attrs={'class':'star'}) movieEvalNum=re.findall(r'd+',str(movieEval))[-1] data.append(movieEvalNum) # 得到电影的短评 movieQuote = movieLi.find('span', attrs={'class': 'inq'}) if(movieQuote): data.append(movieQuote.getText()) else: data.append("无") movieInfo.append(data) basicUrl='https://movie.douban.com/top250' k=0 movieInfo = [] while k<=225: html=getHTMLText(basicUrl,k) time.sleep(1) k+=25 getData(html,movieInfo) title = ['电影名称', '评分', '评论人数', '短评'] test = pd.DataFrame(columns=title,data=movieInfo) output=sys.stdout outputfile=open("movie.csv",'w',encoding='utf-8') print(test) test.to_csv("movie.csv") outputfile.close()
词云图片: