豆瓣电影top250信息爬取

摘要

python的网络爬虫可以方便抓取网页的消息,本文以豆瓣网站为例,实现了python网络爬虫抓取豆瓣电影排行榜top250的过程,以及其中遇到的问题和解决过程。

1.引言

网络爬虫又称网络蜘蛛,或网络机器人。是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。网络爬虫通过网页的链接地址来查找网页内容,并直接返回给用户所需要的数据,不需要人工操纵浏览器获取。Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言,具有易于学习、易于维护等优点,其自带了urlib、urlib2等库满足了爬虫的基本使用,同时网络爬虫对于python的入门具有非常大的帮助。

2.系统结构

在这里插入图片描述
分别使用了Beautiful Soup模块以及csv模块
Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据。Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。所以不需要考虑编码方式。
CSV模块之中实现了读写CSV格式文件的一些类,他可以让你的程序以一种更容易被Excel处理的格式来输出或者读入数据,而不必纠结于CSV文件的一些麻烦的小细节。而且CSV模块可以让你更自由的定制你想要的CSV格式文件。

3. 实现代码

数据的抓取

import requests
import tkinter
import unicodecsv as csv
from bs4 import BeautifulSoup
from tkinter import *

首先导入几个基本的库:
Request相对于urllib来说既能满足需求,而且更加方便,
Tkinter为之后的gui界面设计提供条件,
Csv模块能让结果输出成csv文件,方便数据的处理,
Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能,通过解析文档为用户提供需要抓取的数据。
在这里插入图片描述
打开网页豆瓣电影top250,f12进行观察分析。
网址为:https://movie.douban.com/top250?start=0&filter=
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过分析观察得知,每次点下一页,则start增加25,且start初始值为0。

start = 0

使变量start=0,表示从第一页开始。

result = []

其次定义存储结果的列表result

header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}

f12,在Headers中找到User-Agent,代码中定义headers,模拟浏览器访问。

for i in range(0,10):#250部电影,一页25部html = requests.get('https://movie.douban.com/top250?start='+str(start)+'&filter=',headers=header)html.encoding = 'utf-8'

for循环抓取每页信息,共10页,利用requests发送请求,因为返回要求为中文,所以定义编码格式为utf-8。

start+=25

每循环一次跳转下一页,start增加25。

 for item in soup.find_all('div','info'):#搜索以该标签为起始的内容title = item.div.a.span.string

该段代码首先f12观察规律
在这里插入图片描述
在这里插入图片描述
经过对比发现关于电影的部分都是以该标签为起始,再次观察定位标题部分的位置,最后捕捉。

 try:intro = item.find('span',{'class':'inq'}).string#获取电影简介except AttributeError:pass

在获取简介时出现AttributeError类型异常,为保证程序正常运行,捕捉异常但不进行处理。

about = item.find('div','bd').p.contents[2].stringabout = about.replace('\n','')#去掉分行about = about.replace(' ', '')#去掉空格about1 = about.split('\xa0/\xa0')#去掉\xa0字符year = about1[0]#获取电影拍摄时间country = about1[1]#获取电影拍摄国家people = item.find('div', 'bd').p.contents[0].stringpeople = people.replace('\n','')#去掉分行people = people.replace(' ','')#去掉空格people = people.split('   ',1)#将该行信息分成导演与演员director = people[0]#获取电影拍摄导演rating = item.find('span',{'class':'rating_num'}).get_text()#获取电影评分result.append([title,year,director,rating,country,intro])#结果传入resul

分别捕捉导演、评分、时间、国家等信息
在这里插入图片描述
网页中,这些信息都会有空格以及分行等因素干扰,使用replace()去掉分行和空格。又因为发现输出结果中有空白符\xa0,所以使用split()去掉结果中的空白符,并使该行内容分为时间和国家两部分。最后把所有结果传入result。

with open('text.csv','wb') as f:w = csv.writer(f)w.writerows(result)
#将结果保存为csv文件
print(result)

使用with open语句写入文件,writerows()可将写入的结果分行。

数据可视化的实现

import collections
import pandas as pd
from matplotlib import pyplot as plt

collections模块提供计数功能
pandas模块进行数据分析
matplotlib模块提供绘图功能

df = pd.read_excel("data.xlsx")
# 读取表格数据
show_time = list(df["year"])
#时间列表
show_time_count = collections.Counter(show_time)
show_time_count = show_time_count.most_common(10)
#Counter方法设立计数器,统计前十的年份
show_time_dic = {k: v for k, v in show_time_count}
# 字典推导式更换年份和次数排行
show_time = sorted(show_time_dic)
# 按年份从小到大排序
counts = [show_time_dic[k] for k in show_time]
# 高分电影数量

统计前十年份并排序

plt.figure(figsize=(9, 6), dpi=100)
#设定宽高和分辨率
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 设置字体
plt.bar(show_time, counts, width=0.5, color="cyan")
# 绘制条形图
plt.yticks(range(0, 16, 2))
#重新设置y轴刻度
plt.xlabel("年份")
plt.ylabel("高分电影数量")
plt.title("高分电影数量最多年份Top10", fontsize=15)
# 添加描述信息
plt.grid(alpha=0.2, linestyle=":", c='r')
# 添加网格、网格的透明度、线条样式
plt.show()

设置可视化界面

4.实验

实验结果如下
在这里插入图片描述
表格打开
在这里插入图片描述
可视化处理
在这里插入图片描述

5. 总结和展望

经过本次实验后,我了解到了python网络爬虫的部分运用,利用Beautiful Soup模块可以获取网页的内容,并通过正则表达式提取分析所需要的信息。遗憾的是,设想中电影预告片的下载与gui界面的设计由于时间原因并未实现,希望在这次作业之后,能在假期将所有功能完善。此次实验也让我对python的功能与便捷有了进一步的理解,python是一门较好入门的语言,具有很大的潜力,希望能在以后的学习中更加深入挖掘python的功能,掌握其更多知识。

参考文献:

[1] bilibili. python爬虫爬取豆瓣电影
[2] 钱程,阳小兰,朱福喜. 基于python的网络爬虫技术

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/63562.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Python的豆瓣中文影评差评分析

资源下载地址:https://download.csdn.net/download/sheziqiong/86773473 资源下载地址:https://download.csdn.net/download/sheziqiong/86773473 1. NLP NLP(Natural Language Processing)是指自然语言处理,他的目的…

基于电影《少年的你》豆瓣影评数据的爬取与分析

目标网站:豆瓣电影 目标网址:https://movie.douban.com/subject/30166972/comments?statusP 目标数据:(1)评价 (2)日期 (3)评论 (4)评论点赞 …

爬取豆瓣电影前十页的好评一般差评

分析一波 爬取的地址:https://movie.douban.com/subject/26588308/comments 分别找出好评、一般、差评的评论: 通过地址栏分析,评论的类型和percent_type有关: 好评为h一般为m差评为l 但是我们想找的是在全部里面寻找好评一般和差…

豆瓣电影当中的电影详情数据

打开豆瓣电影,点击当中的排行榜,相应的类型选择为喜剧类型,当前的数据如果不使用数据解析来实现的话,会不会通过阿贾克斯请求来请求到json形式相应的电影数据呢? 当滚轮拖动到底部的时候,发现滚轮很快就变动…

针对豆瓣TOP前250电影做的简单的数据分析~

~~~~~~内容参考如下使用python抓取豆瓣top250电影数据进行分析 - 简书 https://www.jianshu.com/p/720b193a5c2b #导入库,三大常用数据分析库 import numpy as np import pandas as pd import matplotlib.pyplot as plt import matplotlib#读取保存本地的excel文件…

电影评分数据集的分析

目录 数据集的获得使用工具项目流程 数据集的获得 进入该网址:https://grouplens.org/datasets/movielens/ 找到如下part: 点击ml-100k.zip进行数据集的下载 在本地解压后,将会看到如下内容: 但我们目前只需要三个文件&#…

爬取豆瓣电影的评论

好久没有爬虫了,今天突然叫爬豆瓣,有点懵了,不过看了看以前爬的,一葫芦画瓢整了一个这个。bs4和requests yyds! 分析一波 爬取的地址:https://movie.douban.com/subject/26588308/comments 每次翻页可以看到…

2020 豆瓣电影榜单出炉,直接在豆瓣上看电影吧

公众号后台回复“图书“,了解更多号主新书内容 作者:苏生不惑 来源:苏生不惑 一晃又到了年底,2020年就要结束了(你的小目标完成了吗),一年一度的豆瓣电影榜单也出炉了https://movie.douban.com/…

豆瓣Top250电影数据分析报告

我的其他数据分析报告:求职指南——数据分析职位解析 【Python3】Requests+正则表达式+multiprocessing爬虫并存入MySQL数据库 一、分析背景及目的 豆瓣对Top250电影的定义: 豆瓣用户每天都在对“看过”的电影进行“很差”到“力荐”的评价,豆瓣根据每部影片看过的人数以及…

爬取豆瓣电影分类排行榜

确定目标网址:豆瓣电影排行榜 使用Google浏览器打开目标网址,右侧选择分类“传记”,按F12打开开发者工具,会打开如下界面:左侧是数据内容,右侧是网页源代码信息。注:由于该页面是动态的&#x…

豆瓣top250电影数据分析

分析背景及目的 豆瓣电影 Top 250定义:豆瓣用户每天都在对“看过”的电影进行“很差”到“力荐”的评价,豆瓣根据每部影片看过的人数以及该影片所得的评价等综合数据,通过算法分析产生豆瓣电影 Top 250。 本文对于"好评电影"(豆瓣电影top250)的影片评分,上映…

Python对豆瓣电影Top250并进行数据分析

由于CSDN审核机制,导致原文章无法发出,故修改了相关词汇,并改为两篇问章发布。 数据获取 翻页操作 观察可知,我们只需要修改start参数即可 headers字段 headers中有很多字段,这些字段都有可能会被对方服务器拿过来进…

你知道豆瓣电影是怎么评分的吗?

「关注我,和我一起放下灵魂,让灵魂去搬砖。」 作者:小一 介绍:放不下灵魂的搬砖者 全文共6673字,阅读全文需17分钟 Python版本3.8.0,开发工具:Pycharm 写在前面的话: 如果你是因为看…

豆瓣电影TOP250数据分析

本文使用的语言为Python, 用到的几个模块有:BeautifulSoup(爬数据),pandas(数据处理),seaborn(可视化),部分图表由Tableau生成。 1. 数据获取 计划要抓取的…

豆瓣高分电影信息分析(数据分析)

豆瓣高分电影信息分析(数据分析) 1、数据抓取 数据集的获取是我们进行数据分析的第一步。现在获取数据的主要途径一般为:现成数据;自己写爬虫去爬取数据;使用现有的爬虫工具爬取所需内容,保存到数据库&am…

豆瓣电影评分分析(数据分析)

本文主要通过对豆瓣电影爬取的数据进行的简要分析,观察得出各部分之间对应的关系影响。 一.数据抓取 我们要想进行数据分析,首先就要通过爬虫对分析对象网页的数据爬取保存,可以保存到数据库或者文件形式到本地,这里我是保存在表…

人类禁止进入的“微博”,我的AI机器人在那里吹牛,“勾搭”AI小姑娘

最近球友推荐了一个非常有趣的网站,叫“奇鸟”(https://chirper.ai/zh)。 简单来说,这是一个AI专属的微博,人类禁止发言,但是你可以创建一个叫“奇鸟”的机器人代理,让它在里边发帖,…

OpenAI 的嵌入 API太慢了吗?探索其他嵌入模型和服务的优势

这篇文章讨论了机器学习模型的延迟对聊天应用和代理的用户体验的影响,重点关注了生成语言模型(LLM)的提示生成过程中的语义搜索任务。文章比较了两种嵌入API 服务(OpenAI 和 Google)和几种开源嵌入模型(sen…

chatgpt赋能python:Python怎么Import自己写的SEO文章

Python怎么Import自己写的SEO文章 如果你是一位Python开发人员,并且正在为SEO优化而努力编写文章,那么你可能会想知道如何将自己编写的SEO文章导入您的程序中以便更好的利用。 在这篇文章中,我们将介绍如何使用Python中的import语句将自己编…

什么是全景地图?

如果问什么是全景图,那应该很多人都能回答上来。那么要是问什么是全景地图,估计很多人就不清楚了。然而我们在想要知道全景地图是怎么做的时候,就必须要知道什么是全景地图,那么这篇文章就告诉大家什么是全景地图。 全景地图也经…