Python爬取豆瓣电影评分Top250(内附源码地址与效果图)

目录

1.先看一眼项目层次结构和最终效果图吧(通过可视化分析得到豆瓣评分Top250平均评分最高的电影类别)

1.1项目层次结构:

 1.2 项目效果图(注意url地址)

 1.3 实现过程以及步骤

 1.3.1爬取数据

        1.3.1.1 附爬取数据模块源码       

1.3.2 数据处理

1.3.3 可视化分析

1.3.4 结果展示

1.3.5 源码分享



1.先看一眼项目层次结构和最终效果图吧(通过可视化分析得到豆瓣评分Top250平均评分最高的电影类别)

1.1项目层次结构:

 1.2 项目效果图(注意url地址)

 1.3 实现过程以及步骤

        

 1.3.1爬取数据

         通过Python使用BeautifulSoup库爬取豆瓣电影网址,url地址:豆瓣电影 Top 250 (douban.com) 

        1.3.1.1 附爬取数据模块源码       

#----qq-----1813282728--------1.打开要抓取的网页
#2.查看接口(页面地址的调用顺序)
#3.查看数据的数据结构

start = 0
result = []
header = {
    'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Mobile Safari/537.36 Edg/95.0.1020.44'
}
f = open("电影榜Top250.csv",mode="w")
for i in range (0,10):
    html = requests.get("https://movie.douban.com/top250?start="+str(start) + "&filter=",headers=header)
    html.encoding = 'utf-8'
    start += 25
    soup = BeautifulSoup(html.text,"html.parser")
#    print(soup)
    for item in soup.find_all('div','info'):
        title = item.div.a.span.string
        #print(title)
        yearline = item.find('div','bd').p.contents[2].string
        yearline = yearline.replace(' ','')
        yearline = yearline.replace('\n', '')
        year = yearline[0:4]

        movie_message = item.find('div','bd').p.contents[2].string
        movie_message = movie_message.replace(' ','')
        movie_message = movie_message.replace('\n','')
        movie_message = movie_message.replace('/',",")
        movie_message = movie_message.replace(u'\xa0',u'')
        #导入re包1,调用findall方法使用正则表达式查找以1/空格开始 以空格/结尾的1字符串
        #country = re.findall(r"/ (.+?) /", movie_message2)
        #movie_country = country[0]
        #type = re.findall(r"\xa0/\xa0(.+)........................", movie_message2)
        #print(type)

        # 获取评分
        rating = item.find('span', {'class': 'rating_num'}).get_text()

        f.write(title + "," + movie_message + "," + rating)
        f.write("\n")

  1.3.2 数据处理

        对存储在文件中的数据进行数据处理和清洗

        对于爬取到的数据,我们需要进行数据清洗和数据处理,以便去除掉我们不需要的数据以及将数据修正为我们需要的格式。这是我们爬取到的数据:

         通过上述截图我们可以发现,该文件中的有的电影类别不只有一个;对此我们要特别对此进行处理(由于最后结果为分析类别与评分之间的关系,故我们仅取出类别与评分两列即可);举个例子:我们要对肖申克的救赎这条电影的类别和评分做以下处理:

        犯罪/剧情,9.7  ---->  犯罪 9.7 剧情9.7

        即将类别与评分之间的对应关系一一拆分开来,由于具体代码我写的较为繁琐(本人比较菜)先不在这里放啦,如果有需要的可以在下方留言,会分享给大家的。

 1.3.3 可视化分析

        现在,我们已经将数据处理完毕,剩下的就是可视化分析了。由于我们这里用到的是echarts对数据进行可视化分析,所以会用到html页面以及js的相关知识(对于此项目的前端页面我不多赘述,可能会在其他文章中说到,该项目的前端页面大家可以运行就好)。在编写代码之前,大家需要导入flask的相关库

        具体代码如下:

from flask import Flask,render_template
import pandas as pd

# 创建一个app
app = Flask(__name__)

# 准备一个函数,来处理浏览器发送过来的请求
@app.route("/")
def show():
    # 读取csv文件中的内容,发送在文件中
    data = pd.read_csv("类型-评分均值.csv")
    #将csv文件中的内容转化为字典
    #按要求读取数据,仅显示评分最高的8个
    data = data.loc[data.value >= 8.95]
    data = data.to_dict(orient="records")
    return render_template("show.html",data = data)

@app.route("/rating")
def showRating():
    data = pd.read_csv("类型-评分均值.csv")
    data = data.loc[data.value >= 8.95]
    data = data.to_dict(orient="records")
    return render_template("show2.html", data=data)

@app.route("/rating2")
def showRating2():
    data = pd.read_csv("类型-评分均值.csv")
    data_name = data.loc[:, 'name'].values.tolist()
    data_value = data.loc[:, 'value'].values.tolist()
    return render_template("show3.html", data_name=data_name,data_value = data_value)
    

# 运行这个app
if __name__ == '__main__':
    app.run()

其中@qpp.route(“ ”)注解为建立url与处理方法之间的对应关系

1.3.4 结果展示

好了,写到这里。大家就可以运行代码打开控制台下方的网址进行数据展示了

        大家的默认打开 页面应该是这个,因为此页面对于类型与评分之间的对应关系不是很明显,所以我又新建了页面用柱状图来表示他俩之间的对应关系(注意url地址)

 1.3.5 源码分享

        需要源码的小伙伴,可以在下方留言。本人看到会尽快回复的,本项目相关问题大家也可以来提问。

礼貌拿码,大家调通代码之后不要忘记三连哦~~~

  • 39
    点赞
  • 117
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 94
    评论
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 94
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

S_String

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值