使用 Python 爬取豆瓣电影 Top250 多页数据

news/2024/9/22 5:26:12/文章来源:https://www.cnblogs.com/suifeng2000/p/18353320

使用 Python 爬取豆瓣电影 Top250 多页数据

创建时间:2024-08-11

一、完整代码

'''
抓取单贞数据 中的评分 简介 评价人数
将上面的改为多页
https://movie.douban.com/top250?start=0
'''
import requests
from lxml import etreeheader = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0'
}
url = 'https://movie.douban.com/top250?start=0'pag_num = int(input('请输入需要抓取的页数,一页25条数据,共10页:')) * 25 - 25
if pag_num <= 0:print('输入错误!!')exit(-1)
for num in range(0, pag_num + 25, 25):url = f'https://movie.douban.com/top250?start={num}'# print(url)res = requests.get(url, headers=header)# print(res.status_code)res.encoding = res.apparent_encodingtree = etree.HTML(res.text)movies_name = tree.xpath('//ol[@class="grid_view"]//img/@alt')movies_start = tree.xpath('//ol[@class="grid_view"]//span[@class="rating_num"]/text()')movies_intro = tree.xpath('//ol[@class="grid_view"]//span[@class="inq"]//text()')movies_evaluators = tree.xpath('//ol[@class="grid_view"]//div[@class="star"]/span[4]/text()')for name, start, intro, evaluator in zip(movies_name, movies_start, movies_intro, movies_evaluators):movie = name + ',' + start + ',' + intro + ',' + evaluator + '\n'print(f'{name}-----下载成功~~~~')with open('top250.txt', 'a+', encoding='utf-8') as file:file.write(movie)

1.1 效果

二、代码解析

2.1 设置了请求的头部信息

模拟正常的浏览器访问,以避免被网站识别为爬虫并阻止访问。

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

2.2 参数设置

根据输入,通过循环构建不同的 URL 来访问不同的页面。

pag_num = int(input('请输入需要抓取的页数,一页 25 条数据,共 10 页:')) * 25 - 25
if pag_num <= 0:print('输入错误!!')exit(-1)
for num in range(0, pag_num + 25, 25):url = f'https://movie.douban.com/top250?start={num}'

2.3 解析数据

在获取到每个页面的 HTML 内容后,使用 lxml 的 etree 模块解析页面,并通过 xpath 表达式提取出电影的名称、评分、简介和评价人数等信息。

res = requests.get(url, headers=header)
res.encoding = res.apparent_encoding
tree = etree.HTML(res.text)
movies_name = tree.xpath('//ol[@class="grid_view"]//img/@alt')
movies_start = tree.xpath('//ol[@class="grid_view"]//span[@class="rating_num"]/text()')
movies_intro = tree.xpath('//ol[@class="grid_view"]//span[@class="inq"]//text()')
movies_evaluators = tree.xpath('//ol[@class="grid_view"]//div[@class="star"]/span[4]/text()')

2.4 合并保存

将提取到的每部电影的信息组合成一条记录,并保存到一个名为 top250.txt 的文件中。

for name, start, intro, evaluator in zip(movies_name, movies_start, movies_intro, movies_evaluators):movie = name + ',' + start + ',' + intro + ',' + evaluator + '\n'print(f'{name}-----下载成功~~~~')with open('top250.txt', 'a+', encoding='utf-8') as file:file.write(movie)

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

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

相关文章

彼岸网壁纸抓取

彼岸网壁纸抓取 创建时间:2024-08-11 一、代码 1.1 代码 import os import random import timeimport requests from lxml import etreeurl = http://pic.netbian.com/ header = {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gec…

【笔记】【THM】Malware Analysis(恶意软件分析)(还在学)

二进制安全入坟【笔记】【THM】Malware Analysis(恶意软件分析) 探索恶意软件的世界,分析恶意软件如何感染系统并造成破坏。 恶意软件分析就像猫捉老鼠的游戏。恶意软件的作者一直在设计新的技术来躲避恶意软件分析师的眼睛,而恶意软件分析师也一直在寻找识别和抵消这些技术…

一次性能优化,单台4核8G机器支撑5万QPS

这篇文章的主题是记录一次Python程序的性能优化,在优化的过程中遇到的问题,以及如何去解决的。为大家提供一个优化的思路,首先要声明的一点是,我的方式不是唯一的,大家在性能优化之路上遇到的问题都绝对不止一个解决方案。 如何优化 首先大家要明确的一点是,脱离需求谈优…

豆瓣短评榜单短评下载

豆瓣短评榜单短评下载 创建时间:2024-08-07 一、完整代码 import requests from lxml import etreedef get_html(main_url):header = {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/12…

阿里云ACK托管版初始化

阿里云ACK托管版配置图例阿里云1.30.1版本 集群配置在创建过程中注意几个选项付费类型 (按量, 包年包月) 版本 选择VPC 网络插件 节点交换机

电机原理概要

深入理解无刷直流电机矢量控制技术 第一章 电机原理概要 1.1 左手定则 判断通电导体在磁场中的受力。导体受力 $ F(N) $为 \[F=B\times I \times L \]式中,\(B\)为磁通密度($ Wb/m^2\();\)I\(为电流(\)A\();\)L\(为处于磁场中导体的长度(\)m$)。 1.2 右手螺旋定则 右手…

USB协议详解第4讲(USB描述符-标准配置描述符)

1.USB描述符 USB描述符有设备描述符、标准配置描述符、接口描述符、端点描述符、字符串描述符,HID设备有HID描述符、报告描述符和物理描述符。今天主要是学习USB标准配置描述符的组成。 2.标准配置描述符组成 一个USB设备至少有一个或者多个配置,这一点可以从设备描述符的最后…

开启/关闭子系统的命令

WSL 下的运行 我们需要怎么关闭或者开启子系统呢 用管理员权限打开的命令行 先用 wsl -l -v查看当前有无任务我这边是关闭的,于是我想把它开上,输入net start LxssManager已经开启,接下来去想去的地方操作就好了 如果要关掉子系统呢 直接net stop LxssManager即可关闭本文来…

解决LocalDateTime返回前端数据为数组结构的问题

问题现象解决办法如下 1、使用@JsonFormat @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")结果2、使用SpringMVC提供的ExtendMessageConverters @Slf4j @Configuration public class WebMvcConfig extends WebMvcConfigurationSupport…

windows网络正常,但是网络图标变为飞机

本文来自博客园,作者:东岸,转载请注明原文链接:https://www.cnblogs.com/donghao99/p/18353254

气象爱好者必备网址(持续更新)

目录测站资料雷达资料探空图资料学习教程论坛/BBS/个人站天气模拟器 测站资料 q-weather 中山市气象公众网 深圳市气象局(台)-自动站查询 雷达资料 NMC-全国雷达回波反射率组合图 广州天气PDA版-雷达回波图 广州市海珠区Swift 江门雷达(相控阵雷达) NaTyphoon-雷达回波反射…

springMVC 请求流程解析

` @SuppressWarnings("deprecation") protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception { // 实际处理时用的请求,如果不是上传请求,则直接使用接收到的 request,否则封装成上传的 request HttpServletRequ…