【爬虫实战项目一】Python爬取豆瓣电影榜单数据

目录

一、环境准备

二、编写代码

2.1 分页分析

2.2 编码


一、环境准备

安装requests和lxml

pip install requests
pip install lxml

二、编写代码

2.1 分页分析

编写代码前我们先看看榜单的url

我们假如要爬取五页的数据,那么五个url分别是:

https://movie.douban.com/top250?start=0&filter=
https://movie.douban.com/top250?start=25&filter=
https://movie.douban.com/top250?start=50&filter=
https://movie.douban.com/top250?start=75&filter=
https://movie.douban.com/top250?start=100&filter=

不难看出,规律在于start参数,每页有25条数据。

那么按照分页计算公式 (当前页数 - 1) * 每页数据量 得出 代码逻辑。

2.2 编码

我们复制下xpath。

import random
from lxml import etree
import requests
import time

# 请求头信息
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'
}
# 共取5页数据
for i in range(1, 6):
    start = (i - 1) * 25
    url = f'https://movie.douban.com/top250?start={start}&filter='
    response = requests.get(url, headers=headers)
    tree = etree.HTML(response.text)
    div = tree.xpath('//*[@id="content"]/div/div[1]/ol/li/div')
    for d in div:
        # 获取当前电影标题
        title = d.xpath('.//span[@class="title"][1]/text()')[0]
        print(title)
    time.sleep(random.randint(1, 3))

成功爬取豆瓣电影TOP250榜单。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

工业互联网数字中台建设方案(ppt原件)

工业互联网数字中台解决方案旨在为企业提供全面、高效的数据驱动能力。该方案主要包括以下几个核心部分: 数据中台:作为核心,数据中台负责汇聚、整合、提纯和加工各类工业数据,实现数据资产的标准化、模型化和模块化。通过提供API…

cmake使用make和Ninja构建对比

前提 make和Ninja是两个常见的构建工具,在网上查阅了一些资料,说是Ninja比make构建速度要快很多。但是具体不知道快多少,所以趁着这次编译clang的机会,分享下它们在时间方面差多少。 步骤 下载llvm 参考llvm官网,这…

linux系统的网络工具和命令非常多,应该如何学习可以快速提高?

目录 一、linux的网络命令有多少? (一)网络配置 (二)网络监控 (三)网络诊断 (四)网络通信 (五)网络文件传输 (六)网…

java web:springboot mysql开发的一套家政预约上门服务系统源码:家政上门服务系统的运行流程

java web:springboot mysql开发的一套家政预约上门服务系统源码:家政上门服务系统的运行流程 家政上门服务系统的优势 服务质量更稳定:由专业的家政人员提供服务,经过严格的培训和筛选。 价格更透明:采用套餐式收费&…

Valgo,类型安全,表达能⼒强的go验证器

valgo 是一个为 Go 语言设计的类型安全、表达性强且可扩展的验证库。该库的特点包括: github.com/cohesivestack/valgo 类型安全:利用 Go 语言的泛型特性(从 Go 1.18 版本开始支持),确保验证逻辑的类型安全。表达性&a…

UFS协议入门-分层结构

写在前面:本文参考UFS jedec3.1,本文思维导图如下 1. 分层概述 UFS协议分为3层,从上至下分别是:应用层(UAP),传输层(UTP),互联层(UIC),具体结构如下图所示。 2.1 应用层 在应用层(UAP)中,包括:UFS指令集(UCS),设备管理器(Device Manager),任务管理器(Task Manager…

线性代数|机器学习-P10最小二乘法的四种方案

文章目录 1. 概述2. SVD奇异值分解3. 最小二乘法方程解4. 最小二乘法图像解释5. Gram-Schmidt 1. 概述 当我们需要根据一堆数据点去拟合出一条近似的直线的时候,就会用到 最小二乘法 .根据矩阵A的情况,有如下四种方法 在r n m 时,SVD奇异…

Java Web学习笔记30——打包部署

打包: 到资源管理器中再看下: 将这些文件压缩成一个zip文件,然后到nginx的html目录中执行unzip 解压即可。 部署: Nginx:Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代…

SprirngBoot+Vue房屋租赁系统(前后端分离)

技术栈 JavaSpringBootMavenMySQLMyBatisVueShiroElement-UI 角色对应功能 租客管理员 功能截图

搭建智慧互联网医院系统教学:源码解析与在线问诊APP开发

本篇文章,小编将以“源码解析与在线问诊APP开发”为切入点,详细介绍搭建智慧互联网医院系统的过程。 一、智慧互联网医院系统的架构设计 系统架构概述 -前端 -后端 -数据库 功能模块划分 -用户 -预约 -挂号 -问诊、 -病历 -管理 -药品 -配送…

数据:人工智能的基石 | Scale AI 创始人兼 CEO 亚历山大·王的创业故事与行业洞见

引言 在人工智能领域,数据被誉为“新石油”,其重要性不言而喻。随着GPT-4的问世,AI技术迎来了新的浪潮。众多年轻创业者纷纷投身这一领域,Scale AI的创始人兼CEO亚历山大王(Alexander Wang)就是其中的佼佼…

TCP协议与UDP协议区别

举个列子: 三次握手:为了解决网络信道不可靠的问题;防止客户端向服务端发送两次数据,客户端一直处于接收的状态。 四次挥手是一样的。当客户端提出关闭请求,服务端处于关闭等待状态,此时客户端可以发送数据…

西门子step7脉冲方波

西门子300/400PLC程序可以使用系统时钟脉冲来完成一些定时任务,节省自己写Timer定时器。 定时器字节位定义 默认定义的MB1,则M1.5是1秒定时脉冲方波。 案例 快闪,慢闪。 报警器一闪一闪用。 1分钟计时及1分钟一个脉冲 30分钟计时及30分…

多模态vlm综述:An Introduction to Vision-Language Modeling 论文解读

目录 1、基于对比学习的VLMs 1.1 CLIP 2、基于mask的VLMs 2.1 FLAVA 2.2 MaskVLM 2.3 关于VLM目标的信息理论视角 3、基于生成的VLM 3.1 学习文本生成器的例子: 3.2 多模态生成模型的示例: 3.3 使用生成的文本到图像模型进行下游视觉语言任务 4、 基于预训练主干网…

双列集合底层源码

tips: 竖着的箭头:重写 横着的箭头:继承

单元测试之CppTest测试框架

目录 1 背景2 设计3 实现4 使用4.1 主函数4.2 测试用例4.2.1 定义4.2.2 实现 4.3 运行 1 背景 前面文章CppTest实战演示中讲述如何使用CppTest库。其主函数如下: int main(int argc, char *argv[]) {Test::Suite mainSuite;Test::TextOutput output(Test::TextOut…

App UI 风格,引领时尚

App UI 风格,引领时尚

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 6月9日,星期日

每天一分钟,知晓天下事! 2024年6月9日 星期日 农历五月初四 1、 人社部:个人养老金开户人数已超6000万,其中31岁至40岁的中高收入人群是开户、缴费和购买产品的主力军。 2、 医保局刊文:研究显示集采仿制药替代原研药…

URL的编码解码(一),仅针对ASCII码字符

用十六进制对特定字符编码,利用百分号标识搜索字符串解码十六进制字符。 (笔记模板由python脚本于2024年06月09日 18:05:25创建,本篇笔记适合喜好探寻URL的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free…

内存管理--3.用幻灯片讲解C++手动内存管理

用幻灯片讲解C手动内存管理 1.栈内存的基本元素 2.栈内存的聚合对象 3.手动分配内存和释放内存 注意:手动分配内存,指的是在堆内存中。 除非实现自己的数据结构,否则永远不要手动分配内存! 即使这样,您也应该通过std::allocator…