python爬豆瓣top250电影

news2024/11/26 6:19:29

文章目录

  • 前言
  • 分析与实现
    • 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 re
 
title = 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 += 1
        print(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 += 25
    else:
        page = '?start=' + str(sum) + '&filter='
        new_url = url + page
        top250_crawer(new_url, sum)
        sum += 25

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

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

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

相关文章

【缓存常见问题】

在使用缓存时特别是在高并发场景下会遇到很多问题&#xff0c;常用的问题有缓存穿透、缓存击穿、缓存雪崩以及缓存一致性问题。 1、缓存穿透 首先&#xff0c;什么是缓存穿透呢&#xff1f; 缓存穿透是指请求一个不存在的数据&#xff0c;缓存层和数据库层都没有这个数据&…

图片各种格式区别介绍:

图片各种格式区别介绍&#xff1a; JPEG格式&#xff08;Joint Photographic Experts Group&#xff09; JPEG格式一种有损压缩格式&#xff0c;能够将图像压缩在很小的储存空间&#xff0c;图像中重复或不重要的资料会被丢失&#xff0c;因此容易造成图像数据的损伤。尤其是…

目标检测——防护装备数据集

一、重要性及意义 防护装备中的头盔和背心检测具有至关重要的重要性和深远的意义&#xff0c;主要体现在以下几个方面&#xff1a; 首先&#xff0c;它们对于保护工作人员的人身安全起着至关重要的作用。在各类工作环境中&#xff0c;尤其是那些涉及高空作业、机械操作或交通…

Python教学入门:数字类型与字符串

数字类型&#xff08;Numeric Types&#xff09;&#xff1a; 整数&#xff08;int&#xff09;&#xff1a; 在 Python 中&#xff0c;整数是不可变的&#xff0c;可以表示正整数、负整数和零。 Python 中整数的大小仅受限于计算机的内存。 # 定义整数变量 num1 10 num2 -…

【Linux系统编程】第五弹---基本指令(三)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、grep指令 2、zip/unzip指令 3、tar指令 4、bc指令 5、uname指令 6、重要的几个热键 7、拓展指令 总结 1、grep指令 …

Pulsar【部署 01】消息队列PULSAR在Linux环境的主程序安装使用(小内存服务器问题处理)

官方网站&#xff1a;https://pulsar.apache.org/ 对于本地开发和测试&#xff0c;您可以在机器上以单机模式运行Pulsar。单机模式在单个Java虚拟机(JVM)进程中运行所有组件。本地单机版安装手册&#xff1a; 消息队列PULSAR在Linux环境的主程序安装使用 1.Prerequisites1.1 Pu…

四种算法(麻雀搜索算法SSA、螳螂搜索算法MSA、红尾鹰算法RTH、霸王龙优化算法TROA)求解机器人路径规划(提供MATLAB代码)

一、机器人路径规划介绍 移动机器人&#xff08;Mobile robot&#xff0c;MR&#xff09;的路径规划是 移动机器人研究的重要分支之&#xff0c;是对其进行控制的基础。根据环境信息的已知程度不同&#xff0c;路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或…

Flink KafkaSink分区配置的不同版本对比

Flink KafkaSink分区配置的不同版本对比 在不同版本的Flink中&#xff0c;KafkaSink 分区默认配置方式可能会有一些变化。以下是摘自Flink官方文档不同版本的原文&#xff1a; 1. Flink版本&#xff1a;1.12~1.19 Sink 分区 # 配置项 sink.partitioner 指定了从 Flink 分区到 …

12个可能未使用过的Python特性

大多数程序员不知道的令人难以置信的功能列表。 Python 是顶级编程语言之一&#xff0c;它具有许多程序员从未使用过的许多隐藏功能。在这篇文章中&#xff0c;我将分享你可能从未使用过的13 个 Python 特性。 1.列表Stepping 这是一个 step 参数&#xff0c;可以通过采取几…

六西格玛培训公司怎么选?一篇就够你明白

在如今六西格玛培训公司琳琅满目的市场中&#xff0c;如何挑选出一家既专业又符合自身需求的公司呢&#xff1f;本文将为大家提供一些实用的建议&#xff0c;助您在挑选六西格玛培训公司时不再迷茫。 一、明确培训目标 在选择六西格玛培训公司之前&#xff0c;首先要明确自己的…

nginx代理https地址报阿里云Web应用防火墙 (WAF)

项目中开通的网络策略都是从nginx代理出去&#xff0c;当代理的地址是阿里云地址时出现了如下错误。 我的nginx配置如下 在网上查资料发现&#xff0c;阿里是通过请求头中的host来校验域名是否存在来拦截该请求。最终配置如下&#xff1a; location /test/ { prox…

数据结构学习记录

数据结构 数组 & 链表 相连性 | 指向性 数组可以迅速定位到数组中某一个节点的位置 链表则需要通过前一个元素指向下一个元素&#xff0c;需要前后依赖顺序查找&#xff0c;效率较低 实现链表 // head > node1 > node2 > ... > nullclass Node {constructo…

C语言 | 动态内存管理

目录&#xff1a; 1. 为什么要有动态内存分配 2. malloc和free 3. calloc和realloc 4. 常见的动态内存的错误 5. 动态内存经典笔试题分析 6. 柔性数组 1. 为什么要有动态内存分配 我们已经掌握的内存开辟方式有&#xff1a; int val 20; //在栈空间上开辟四个字节 cha…

【笔试强训】Day1 --- 数字统计 + 两个数组的交集 + 点击消除

文章目录 1. 数字统计2. 两个数组的交集3. 点击消除 1. 数字统计 【链接】&#xff1a;数字统计 解题思路&#xff1a;模拟&#xff0c;利用数学知识&#xff0c;计算每个数字中2出现的个数。&#xff08;这里也可以将数字转换成字符串来统计字符’2’出现的个数&#xff09…

30. 【Android教程】吐司提示:Toast 的使用方法

在使用 Android 手机的时候&#xff0c;有没有遇到过如图中这种类型的消息提示&#xff1f; 这个在 Android 中被称为 Toast&#xff0c;用来短暂的展示一些简短的提示信息。相比弹窗来讲它对用户的打扰更小&#xff0c;在提示一段时间之后会自动消失&#xff0c;通常用来提示当…

第2章:车辆纵向控制

2.1 车辆纵向动力学模型 注&#xff1a;车辆的纵向控制是指控制车辆行驶方向上的加减速&#xff0c;使得汽车可以按照期望的速度行驶&#xff0c;并保持安全的前后车距&#xff08;即对汽车油门 / 刹车的控制&#xff09;&#xff1b; 2.1.1 车辆纵向受力模型 &#xff1a;轮胎…

笔记本电脑键盘没反应怎么办?4个方法解决电脑问题!

“好奇怪啊&#xff0c;我的笔记本电脑键盘莫名其妙就没有反应了&#xff0c;怎么按都无法解决这个问题&#xff0c;有朋友知道应该怎么解决吗&#xff1f;” 笔记本电脑键盘是我们日常工作和生活中不可或缺的输入工具&#xff0c;我们无论是输入文件还是与别人聊天&#xff0c…

【数信杯】pyc

题目 题目描述&#xff1a; py又cc 附件&#xff1a;&#xff08;资源已上传&#xff09; pyc文件是是py的编译文件&#xff0c;使用反编译工具还原文件 1. 反编译pyc文件 在线工具&#xff1a;http://tools.bugscaner.com/decompyle/ 本地工具&#xff1a;uncompyle6 pip …

网上客车售票管理系统(含源码+sql+视频导入教程+文档+PPT)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 网上客车售票管理系统4拥有两种角色&#xff1a;管理员和用户 管理员&#xff1a;车票管理、订单管理、退票管理、车票流水记录、余票盘点、留言管理、用户管理等 用户&#xff1a;登录…

科学高效备考2024年AMC10,吃透1250道AMC10历年真题和详细解析

距离2024年AMC10比赛正式开始还有6个多月的时间&#xff0c;备考要趁早。 我们今天继续来随机看5道AMC10真题&#xff0c;以及详细解析&#xff0c;这些题目来自1250道完整的官方历年AMC10真题库。 2000-2023年AMC10真题练习和解析&#xff1a;2016年第23题 这道题考点是代数的…