当前位置: 首页 > news >正文

如何用python抓取豆瓣电影TOP250

1.如何获取网站信息?

(1)调用requests库、bs4库

#检查库是否下载好的方法:打开终端界面(terminal)输入pip install bs4,
如果返回的信息里有Successfully installed bs4 说明安装成功(requests同理)

from bs4 import BeautifulSoup
import requests

(2)访问网站

import requests
response = requests.get("https://movie.douban.com/top250")
print(response.status_code)     #HTTP状态响应码
if response.ok:print(response.text)
else:print("请求失败")

输出结果: 

 418
请求失败

 无法访问原因:

有些网站会检查请求的 User-Agent,如果没有提供合适的 User-Agent,可能会拒绝访问。

(3)添加 User-Agent 头部

 打开网站->右键->检查->network

刷新网页—>点击任意一个模块—>在headers一栏找到"User-Agent"—>复制冒号后面的内容 

headers = {"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 SE 2.X MetaSr 1.0"
}
response = requests.get("https://movie.douban.com/top250",headers=headers)

(4)判断网站是否响应

 如果状态码为200说明访问成功

import requests
headers = {"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 SE 2.X MetaSr 1.0"
}
response = requests.get("https://movie.douban.com/top250",headers=headers)
print(response.status_code)     #HTTP状态响应码
if response.ok:print(response.text)
else:print("请求失败")

2.如何筛选出标题?

(1)分析网站的html文本

找出标题所在html文本的特点:

使用findAll函数筛选

response = requests.get("https://movie.douban.com/top250",headers=headers)
content = response.text
soup = BeautifulSoup(content, "html.parser")
all_titles = soup.findAll("span", attrs={"class": "title"})
for t in all_titles:print(t.string)

 输出结果:此时输出的标题不仅有中文标题还有原版标题

肖申克的救赎
 / The Shawshank Redemption
霸王别姬
阿甘正传
 / Forrest Gump
泰坦尼克号
 / Titanic
千与千寻
 / 千と千尋の神隠し
这个杀手不太冷
 / Léon
美丽人生
 / La vita è bella
星际穿越
 / Interstellar
盗梦空间
 / Inception
楚门的世界
 / The Truman Show
辛德勒的名单
 / Schindler's List
忠犬八公的故事
 / Hachi: A Dog's Tale
海上钢琴师
 / La leggenda del pianista sull'oceano
三傻大闹宝莱坞
 / 3 Idiots
放牛班的春天
 / Les choristes
机器人总动员
 / WALL·E
疯狂动物城
 / Zootopia
无间道
 / 無間道
控方证人
 / Witness for the Prosecution
大话西游之大圣娶亲
 / 西遊記大結局之仙履奇緣
熔炉
 / 도가니
教父
 / The Godfather
触不可及
 / Intouchables
当幸福来敲门
 / The Pursuit of Happyness
寻梦环游记
 / Coco

Process finished with exit code 0

如何筛选出中文标题:

all_titles = soup.findAll("span", attrs={"class": "title"})for t in all_titles:str = t.stringif "/" not in str:    #筛选出中文标题print(str)

 运行结果:

肖申克的救赎
霸王别姬
阿甘正传
泰坦尼克号
千与千寻
这个杀手不太冷
美丽人生
星际穿越
盗梦空间
楚门的世界
辛德勒的名单
忠犬八公的故事
海上钢琴师
三傻大闹宝莱坞
放牛班的春天
机器人总动员
疯狂动物城
无间道
控方证人
大话西游之大圣娶亲
熔炉
教父
触不可及
当幸福来敲门
寻梦环游记

3.如何爬取250个电影标题?

首先观察网址链接,找出不同点:

“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=175&filter=”
“https://movie.douban.com/top250?start=200&filter=”
“https://movie.douban.com/top250?start=225&filter=”

特点:网站总共有十页,每一页网址链接只有"start="后面的数字不一样

而数字正是每一页网页的第一个电影的索引,而每一页一共25个电影,因此可以才用for循环来访问这十个不同的网址:

for start_num in range(0,250,25):   #第一个电影索引是0,第二个电影索引是249,每页网页有25个电影response = requests.get(f"https://movie.douban.com/top250?start={start_num}",headers=headers)

最终代码:

from bs4 import BeautifulSoup
import requests
headers = {"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 SE 2.X MetaSr 1.0"
}
for start_num in range(0,250,25):   #第一个电影索引是0,第二个电影索引是249,每页网页有25个电影response = requests.get(f"https://movie.douban.com/top250?start={start_num}",headers=headers)content = response.textsoup = BeautifulSoup(content, "html.parser")all_titles = soup.findAll("span", attrs={"class": "title"})for t in all_titles:str = t.stringif "/" not in str:    #筛选出中文标题print(str)
response.close()           #关掉response

相关文章:

如何用python抓取豆瓣电影TOP250

1.如何获取网站信息? (1)调用requests库、bs4库 #检查库是否下载好的方法:打开终端界面(terminal)输入pip install bs4, 如果返回的信息里有Successfully installed bs4 说明安装成功(request…...

鸽笼原理与递归 - 离散数学系列(四)

目录 1. 鸽笼原理 鸽笼原理的定义 鸽笼原理的示例 鸽笼原理的应用 2. 递归的定义与应用 什么是递归? 递归的示例 递归与迭代的对比 3. 实际应用 鸽笼原理的实际应用 递归的实际应用 4. 例题与练习 例题1:鸽笼原理应用 例题2:递归…...

Ubuntu 20.04常见配置(含yum源替换、桌面安装、防火墙设置、ntp配置)

Ubuntu 20.04常见配置 1. yum源配置2. 安装桌面及图形化2.1 安装图形化桌面2.1.1 选择安装gnome桌面2.1.2 选择安装xface桌面 2.2 安装VNC-Server 3. ufw防火墙策略4. 时区设置及NTP时间同步4.1 时区设置4.2 NTP安装及时间同步4.2.1 服务端(例:172.16.32…...

AI学习指南深度学习篇-生成对抗网络的基本原理

AI学习指南深度学习篇-生成对抗网络的基本原理 引言 生成对抗网络(Generative Adversarial Networks, GANs)是近年来深度学习领域的一个重要研究方向。GANs通过一种创新的对抗训练机制,能够生成高质量的样本,其应用范围广泛&…...

什么是网络安全

网络安全是指通过采取必要措施,防范对网络的攻击、侵入、干扰、破坏和非法使用以及意外事故,使网络处于稳定可靠运行的状态,以及保障网络数据的完整性、保密性、可用性的能力。 网络安全涉及多个层面,包括硬件、软件及其系统中数…...

Redis list 类型

list类型 类型介绍 列表类型 list 相当于 数组或者顺序表 list内部的编码方式更接近于 双端队列 ,支持头插 头删 尾插 尾删。 需要注意的是,Redis的下标支持负数下标。 比如数组大小为5,那么要访问下标为 -2 的值可以理解为访问 5 - 2 3 …...

Linux更改固定IP地址

1.VMware里更改虚拟网络 一: 二: 三:确定就好了 2.修改Linux系统的固定IP 一:进入此文件 效果如下: 执行以下命令: 此时IP已更改 3.远程连接 这个是前提!!! 更改网络编辑器后网络适配器可能会修改,我就是遇着这个,困住我了一会 一:可以以主机IP对应连接 连接成功 二:主机名连…...

Qt+大恒相机回调图片刷新使用方式

一、前言 上篇文章介绍了如何调用大恒SDK获得回调图片,这篇介绍如何使用这些图片并刷新到界面上。考虑到相机的帧率很高,比如200fps是很高的回调频率。那么我们的刷新频率是做不到这么快,也没必要这么快。一般刷新在60帧左右就够了。 二、思路…...

Docker 环境下 PostgreSQL 监控实战:从 Exporter 到 Prometheus 的部署详解

Docker 环境下 PostgreSQL 监控实战:从 Exporter 到 Prometheus 的部署详解 文章目录 Docker 环境下 PostgreSQL 监控实战:从 Exporter 到 Prometheus 的部署详解一 节点简述二 节点监控部署1)创建 PostgreSQL 的 exporter 账号2)…...

构建带有调试符号的srsRAN 4G

### 构建带有调试符号 首先确保已下载srsRAN 4G,并已创建并导航至构建文件夹: bash git clone https://github.com/srsran/srsran_4g.git cd srsRAN_4G mkdir build cd build 若srsRAN 4G已构建完成,应清除原有构建文件夹后继续。 可以使…...

算法题总结(十)——二叉树上

#二叉树的递归遍历 // 前序遍历递归LC144_二叉树的前序遍历 class Solution {public List<Integer> preorderTraversal(TreeNode root) {List<Integer> result new ArrayList<Integer>(); //也可以把result 作为全局变量&#xff0c;只需要一个函数即可。…...

【MySQL】MySQL 数据库主从复制详解

目录 1. 基本概念1.1 主从架构1.2 复制类型 2. 工作原理2.1 复制过程2.2 主要组件 3. 配置步骤3.1 准备工作3.2 在主服务器上配置3.3 在从服务器上配置 4. 监控和维护4.1 监控复制状态4.2 处理复制延迟4.3 故障恢复 5. 备份策略5.1 逻辑备份与物理备份5.2 增量备份 6. 使用场景…...

一种格式化printf hex 数据的方法

格式化输出HEX数据 调试过程中通常需要个格式化输出16进制数据&#xff0c;为了方便美观可以参考如下方法。 #define __is_print(ch) ((unsigned int)((ch) - ) < 127u - )/*** dump_hex* * brief hex打印* * param buf: 需要打印的原始数据* param size: 原始数据类型*…...

在LabVIEW中如何读取EXCEL

在LabVIEW中读取Excel文件通常使用“报告生成工具包”&#xff08;Report Generation Toolkit&#xff09;。以下是详细步骤&#xff1a; ​ 安装工具包&#xff1a;确保已安装“报告生成工具包”。这通常随LabVIEW一起提供&#xff0c;但需要单独安装。 创建VI&#xff1a; 打…...

布匹瑕疵检测数据集 4类 2800张 布料缺陷 带标注 voc yolo

布匹瑕疵检测数据集 4类 2800张 布料缺陷 带标注 voc yolo 对应标注&#xff0c;格式VOC (XML)&#xff0c;选配Y0L0(TXT) label| pic_ num| box_ _num hole: (425&#xff0c; 481) suspension_ wire: (1739&#xff0c; 1782) topbasi: (46&#xff0c; 46) dirty: (613&…...

灵动微高集成度电机MCU单片机

由于锂电技术的持续进步、消费者需求的演变、工具种类的革新以及应用领域的扩展&#xff0c;电动工具行业正呈现出无绳化、锂电化、大功率化、小型化、智能化和一机多能化的发展趋势。无绳化和锂电化的电动工具因其便携性和高效能的特性&#xff0c;已成为市场增长的重要驱动力…...

陪护小程序|护理陪护系统|陪护小程序成品

智能化&#xff0c;作为智慧医疗宏伟蓝图的基石&#xff0c;正引领着一场医疗服务的深刻变革。在这场变革的浪潮中&#xff0c;智慧医院小程序犹如璀璨新星&#xff0c;迅速崛起&#xff0c;而陪护小程序的诞生&#xff0c;更是如春风化雨&#xff0c;细腻地触及了老年病患、家…...

【JVM】基础篇

1 初识JVM 1.1 什么是JVM JVM 全称是 Java Virtual Machine&#xff0c;中文译名 Java虚拟机。JVM 本质上是一个运行在计算机上的程序&#xff0c;他的职责是运行Java字节码文件。 Java源代码执行流程如下&#xff1a; 分为三个步骤&#xff1a; 1、编写Java源代码文件。 …...

软件测试工程师 朝哪里进阶?

软件测试工程师 朝哪里进阶&#xff1f; 这里浅谈一下我的看法。 软件测试工程师 朝哪里进阶呢&#xff1f; 当我们测试工程师工作了2-3年后&#xff0c;就需要往前走往高走&#xff0c;就像一句名言说的&#xff1a;我们需要像ceo一样工作。 将自己的边界扩大一点&#xff0…...

Obsidian Plugin Release Pre-check

- [ ] 修改代码 - [ ] 修改README.md - [ ] 修改manifest.json - [ ] --将上述修改push到GitHub-- - [ ] 修改release版本 git tag git tag -a 1.0.6 -m "1.0.6" git push origin 1.0.6 ------------------------------------------- 备忘https://semver.org/lang/…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展&#xff0c;AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术&#xff0c;在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

LRU 缓存机制详解与实现(Java版) + 力扣解决

&#x1f4cc; LRU 缓存机制详解与实现&#xff08;Java版&#xff09; 一、&#x1f4d6; 问题背景 在日常开发中&#xff0c;我们经常会使用 缓存&#xff08;Cache&#xff09; 来提升性能。但由于内存有限&#xff0c;缓存不可能无限增长&#xff0c;于是需要策略决定&am…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...