爬虫大作业

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()

 

词云图片:

 

posted @ 2018-04-29 20:50  lawliet9  阅读(220)  评论(0编辑  收藏  举报