• 爬虫大作业


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

    词云图片:

  • 相关阅读:
    误区30日谈25-30
    误区30日谈21-24
    误区30日谈16-20
    误区30日谈11-15
    误区30日谈6-10
    eclipse如何导入java项目文件
    Spring配置bean文件的底层实现方式
    hibernate中get,load,list,iterate的用法及比较
    MySQL数据库的事务管理
    单元格样式
  • 原文地址:https://www.cnblogs.com/lawliet12/p/8971892.html
Copyright © 2020-2023  润新知