python爬豆瓣top250电影

文章目录

  • 前言
  • 分析与实现
    • 1.对豆瓣网网站进行Ajax分析
    • 2.发送请求
    • 3.进一步筛选(提取)
  • 完整代码

前言

通过这个项目,可以让小白对爬虫有一个初步认识,爬取豆瓣top250是一个初学者学爬虫的必经之路,话不多说,我们开始吧

分析与实现

1.对豆瓣网网站进行Ajax分析

对豆瓣电影top250网站进行检查,可以在网络部分看到该页数据的请求头信息
在这里插入图片描述

在这里插入图片描述
需要注意的是,我们要爬取的页面数据文件是top250这个文件,判断需要从哪个包中提取数据可以在响应里看到:
在这里插入图片描述

2.发送请求

import requests# 发请求测试
response = requests.get('https://movie.douban.com/top250')
print(response)

会得到418的状态码,就是豆瓣会拒绝我们的访问

这是因为服务器没有识别到我们是用户端,所以为了保证网站数据的安全,将我们拒之门外。那么我们就需要对自己进行一些简单的伪装。

这里也是需要IP地址的
可以从以下方法获取IP地址
在这里插入图片描述

UA(user-agent)伪装,是我本次采用的伪装策略,也是最简单的伪装策略,有些网站的反爬机制比较复杂,则需要采用更加复杂的反反爬机制来进行伪装,不过,对于豆瓣来说,UA伪装就够用了。

那么我们现在给我们的请求带一个请求头,并且请求头中带一个User-agent信息,这个信息可以在检查页面的请求头信息(Headers)里找到,如下所示:
在这里插入图片描述
填入代码中

import requests# 发请求测试网站反爬机制
headers = {'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/1'}
response = requests.get('https://movie.douban.com/top250',headers=headers)
print(response)

状态码就为200,说明响应成功,这个时候我们已经爬到我们想要的数据了
然后就可以直接答应出来我们想要的数据
在这里插入图片描述

3.进一步筛选(提取)

这里我使用的方法是python正则式,所以我们需要先分析html代码的结构,这里需要一点前端知识,但是因为爬虫的前导知识是前端开发,因此默认大家都是能看懂的。

通过观察,我们可以发现电影标题包含在这个类里,所以我们可以使用正则式将它匹配出来:

<span class="title">(.*?)</span>

代码

import retitle = re.findall('<span class="title">(.*?)</span>', response.text,re.S)

提取完之后我们需要对不干净的数据进行筛选,这一步可以省略,详见于完整代码。

其他信息也按照这个逻辑提取出来,这里我提取了题目、国籍、上映时间这三个数据,大家可以根据自己的需要去提取。

完整代码

使用正则表达式的代码

import requests
import re'''爬取豆瓣电影top20'''
def top250_crawer(url, sum):headers = {'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/1'}response = requests.get(url, headers=headers)print(response.text)title = re.findall('<span class="title">(.*?)</span>', response.text,re.S)new_title = []for t in title:if '&nbsp;/&nbsp' not in t:new_title.append(t)data = re.findall('<br>(.*?)</p>', response.text, re.S)time = []country = []for str1 in data:str1 = str1.replace(' ', '')str1 = str1.replace('\n', '')time_data = str1.split('&nbsp;/&nbsp;')[0]country_data = str1.split('&nbsp;/&nbsp;')[1]time.append(time_data)country.append(country_data)print(len(new_title))print(len(time))print(len(country))for j in range(len(country)):sum += 1print(str(sum)+'.' + new_title[j] + ',' + country[j] + ',' + time[j])url = 'https://movie.douban.com/top250'
sum = 0
'遍历10页数据,250条结果'
for a in range(10):if sum == 0:top250_crawer(url, sum)sum += 25else:page = '?start=' + str(sum) + '&filter='new_url = url + pagetop250_crawer(new_url, sum)sum += 25

就提取到我们想要的内容了
在这里插入图片描述

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

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

相关文章

解决AGP升级到8.0后编译报错kaptGenerateStubsDebugKotlin

问题描述 升级了Gradle插件到8.0&#xff0c;运行报以下错误. Execution failed for task :app:kaptGenerateStubsDebugKotlin. > compileDebugJavaWithJavac task (current target is 1.8) and kaptGenerateStubsDebugKotlin task (current target is 17) jvm target com…

每日算法4/17

1552. 两球之间的磁力 题目 在代号为 C-137 的地球上&#xff0c;Rick 发现如果他将两个球放在他新发明的篮子里&#xff0c;它们之间会形成特殊形式的磁力。Rick 有 n 个空的篮子&#xff0c;第 i 个篮子的位置在 position[i] &#xff0c;Morty 想把 m 个球放到这些篮子里&…

【面试经典 150 | 链表】分隔链表

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;模拟 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的数据结构等内容进行回顾…

Springboot集成JWT token实现权限验证

紧接着上一次的博客&#xff0c;我们现在来给这个项目添加一个jwt的权限验证功能&#xff0c;上一次的博客如下&#xff1a;springboot结合vue实现登录和注册功能-CSDN博客 1.后端 1.1.导入依赖 <dependency><groupId>com.auth0</groupId><artifactId&g…

Redis: 事务操作

文章目录 一、Redis的事务定义二、Redis事务的操作方式三、Redis事务三特性四、事务冲突问题五、使用场景 一、Redis的事务定义 Redis事务是一组命令的集合&#xff0c;这些命令会作为一个单独的执行单位进行执行。在执行事务期间&#xff0c;其他客户端发送的命令不能被插入到…

长页面多模块调接口优化

背景&#xff1a; 查询近3年数据之类的&#xff0c;接口就会有大量数据需要查询做聚合&#xff0c;因此接口响应较慢。同时前端页面有大量不同维度展示的图表&#xff0c;渲染阻塞时间过长&#xff0c;用户体验较差&#xff0c;长时间loading&#xff0c;导致无法交互。因此前…

2021年全国大学生电子设计竞赛D题——基于互联网的摄像测量系统(一)

01 D题实现效果演示 视频参考微信原文&#xff1a;2021年全国大学生电子设计竞赛D题——基于互联网的摄像测量系统&#xff08;一&#xff09; 02 D题任务要求 &#xff08;D题原文件参见本文附录&#xff09; 设计并制作一个图中所示的基于互联网的摄像测量系统。图中边长…

【Python】异常处理结构

文章目录 1.python异常2.try_except异常处理结构3.try... 多个except异常处理4.try_except_else异常处理结构5.try_except_finally异常处理结构6.常见报错类型 在运行代码时&#xff0c;总是遇到各种异常&#xff0c;且出现异常时&#xff0c;脚本就会自动的的停止运行&#xf…

时序分析基本知识点

【FPGA开发/IC开发之时序约束最全面的归纳总结】时序路径基本概念及时序约束分析方法_时序约束指令-CSDN博客

就业班 第三阶段(nginx) 2401--4.17 day1 nginx1

负载均衡集群 1、集群是什么&#xff1f; 1 集群&#xff08;cluster&#xff09;技术是一种较新的技术&#xff0c;通过集群技术&#xff0c;可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益&#xff0c;其任务调度则是集群系统中的核心技术。 …

频率分辨率

频率分辨率是描述频谱分析能力的一个重要指标。它指的是频谱分析仪在频率轴上的最小可区分的频率间隔。 更具体地说: 频率分辨率描述了频谱分析中能够分辨出的最小频率差。例如,如果频率分辨率为1 Hz,就意味着该分析仪能够将相隔1 Hz的两个频率成分区分开来。 频率分辨率受到…

FinalShell 远程连接 Linux(Ubuntu)系统

Linux 系列教程&#xff1a; VMware 安装配置 Ubuntu&#xff08;最新版、超详细&#xff09;FinalShell 远程连接 Linux&#xff08;Ubuntu&#xff09;系统Ubuntu 系统安装 VS Code 并配置 C 环境 ➡️➡️➡️提出一个问题&#xff1a;为什么使用 FinalShell 连接&#xff0…

Unity Android 2022 Release-Notes

&#x1f308;Unity Android 2022 Release-Notes 本文信息收集来自自动搜集工具&#x1f448; 版本更新内容2022.3.17Android: Added Auto Rotation behavior to the Orientation section.(UUM-44021)2022.3.16Android: Fixed ad banner disappearance after suspend/resume.(…

AI时代,智能体成下一个爆点

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已经从科幻小说中的概念变成了现实生活中的重要角色。AI大模型技术&#xff0c;作为人工智能领域的一项重要突破&#xff0c;如今已不再是一个新鲜词汇&#xff0c;而是正在深刻改变着我们的生活方式和工作模…

初识ansible服务及ansible主机清单配置

目录 1、什么是自动化批量管理 2、自动化工具ansible架构 3、ansible服务专用术语对照表 4、设置主机清单&#xff08;inventory&#xff09; 4.1实验环境准备 4.2配置主机清单 4.2.1分组基本格式 4.2.2指定用户名&#xff0c;密码。端口 4.2.3子组 4.3查看 4.3.1看…

LeetCode———144—— 二叉树的前序遍历

目录 ​编辑 1.题目 2.解答 1.首先计算二叉树的节点个数&#xff1a; 2.以先序遍历&#xff08;Preorder Traversal&#xff09;的方式遍历一个二叉树&#xff0c;并将遍历到的节点的值存储在一个整数数组中 3.最终代码 1.题目 . - 力扣&#xff08;LeetCode&#xff09; 给…

java中如何将各种日期时间转换成LocalDateTime,(时间转换)

//假如是时间戳 "createTimeLong": 1679287522749,long createTimeLong Long.parseLong(axl800TestResByExamTO.getCreateTimeLong()); // 将时间戳转换为Instant对象Instant instant Instant.ofEpochMilli(createTimeLong); // 转换为LocalDateTime对象LocalDate…

牛客周赛 Round 39题解

题目讲解&#xff1a;牛客周赛39讲题直播回放_哔哩哔哩_bilibili 题号标题已通过代码通过率我的状态A小红不想做炸鸡块粉丝粉丝题点击查看1978/2610未通过B小红不想做鸽巢原理点击查看1172/8606未通过C小红不想做完全背包&#xff08;easy&#xff09;点击查看1261/3574未通过…

软件看门狗:让服务永不宕机

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 缘起 看门狗WatchDog是个硬件领…

双碳目标下基于“遥感+”集成技术的碳储量、碳排放、碳循环、温室气体等多领域监测与模拟

以全球变暖为主要特征的气候变化已成为全球性环境问题&#xff0c;对全球可持续发展带来严峻挑战。2015年多国在《巴黎协定》上明确提出缔约方应尽快实现碳达峰和碳中和目标。2019年第49届 IPCC全会明确增加了基于卫星遥感的排放清单校验方法。随着碳中和目标以及全球碳盘点的现…