爬虫大作业

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 @   lawliet9  阅读(225)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示