Python爬虫04_Requests豆瓣电影爬取

一、 爬取豆瓣电影排行榜数据

import requests
import json

url = ‘https://movie.douban.com/j/chart/top_list’
param = {
‘type’:‘24’,
‘interval_id’:‘100:90’,
‘action’:‘’,
‘start’:‘0’, #从库中的第几部电影去取
‘limit’:‘20’,
}
headers = {
‘User-Agent’:‘Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:103.0) Gecko/20100101 Firefox/103.0’
}
response = requests.get(url=url,params=param,headers=headers)
list_data = response.json()
fp = open(‘e:/Reptile/douban.json’,‘w’,encoding=‘utf-8’)
json.dump(list_data,fp=fp,ensure_ascii=False)

print(‘over!!!’)

二、爬取数据时页面数据分析的重要性

在真正写爬虫之前,必须先做一件事:肉眼+工具“观察”页面,搞清楚数据到底以什么形式存在、藏在哪儿、怎样才能拿到。下面给你一张“观察清单”,按图索骥即可。
1. 先分清“页面呈现”≠“原始数据”

你在浏览器里看到的实际在网络层传输的可能
表格/列表/文字HTML 片段、JSON、CSV、二进制图片/文件
点击“加载更多”AJAX 异步请求返回 JSON
无刷新翻页后端接口分页参数(?page=2
图片懒加载data-src 真实地址延迟替换 src

2. 四步现场勘查(用浏览器开发者工具 F12)
① Elements(元素)面板
看 DOM 结构:数据是直接嵌在 HTML 标签里,还是通过 JS 动态插入?
检查关键节点:id、class、data-* 属性,方便后面写 XPath/CSS 选择器。
② Network(网络)面板
刷新页面,筛选 XHR 或 Fetch 请求:
有没有 .json 结尾的接口?
请求参数里是否有 page、size、token?
看响应头:
Content-Type: application/json → 纯接口,直接抓。
Content-Type: text/html → 服务端渲染,用 HTML 解析。
Content-Type: image/* → 二进制流,用 requests.get().content 保存。
看响应体(Preview/Response 标签):
是 HTML 片段?还是 JSON 数组?还是 base64 图片?
③ Sources(源码)面板
全局搜索关键字(Ctrl+Shift+F):
搜接口关键词:api/v1/list、/search?keyword=。
搜加密/混淆字段:token、sign、_t。
定位 JS 变量:数据是否藏在 window.INITIAL_STATE 或某个全局变量?
④ Application(应用)面板
看 Cookies/LocalStorage/SessionStorage:
有没有身份令牌(sessionid、jwt)?
看 IndexedDB 是否缓存了离线数据。
3. 常见数据藏身方式及获取手段对照表

数据呈现方式数据真实位置获取方式
普通网页列表HTML 标签中requests.get() + BeautifulSoup 解析
下拉加载更多异步 JSON 接口直接 requests.get(api_url) 拿 JSON
图片懒加载data-src 属性提取真实地址再下载
加密参数JS 生成 sign① 抠算法 ② 用 PyExecJS/Node 复现 ③ 直接 Selenium
登录后数据Cookie 鉴权POST /login 拿 Cookie,后续带 Cookie 访问
无限滚动分页 JSON 接口找到 page= 参数循环请求
大文件下载二进制流stream=True 分块保存
字体反爬自定义字体文件下载字体 → 映射字符 → 替换

4. 一句话口诀
“先 F12 看 Network,接口优先,HTML 兜底,JS 加密就拆算法。”

不确定类型?把 Response 内容复制到 JSON.cn 在线校验,看是否合法 JSON。
需要批量测试?用 Postman 或 curl 手动调接口,确认参数和返回格式。
遇到 403/401?检查 Headers 里的 User-Agent、Referer、Authorization 是否缺失。

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

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

相关文章

工业物联网模块运营指南​

一、运营目标 工业物联网模块运营的核心目标在于通过高效运作,实现提高工业设备运行效率、降低生产成本、推动生产过程智能化管理,进而提升企业的整体竞争力。这一目标是后续所有运营工作的出发点和落脚点,为各项运营环节提供方向指引。 二、关键运营环节及做法 (一)设…

9.项目起步(3)

1项目起步-静态资源初始化 和 Error Lens 安装图片资源和样式资源error lens 安装2项目起步-scss文件自动导入为什么要自动导入自动导入配置scss变量自动导入$xtxColor: #27ba9b; $helpColor: #e26237; $sucColor: #1dc779; $warnColor: #ffb302; $priceColor: #cf4444;css: {p…

MCP提示词工程:上下文注入的艺术与科学

MCP提示词工程:上下文注入的艺术与科学 🌟 Hello,我是摘星! 🌈 在彩虹般绚烂的技术栈中,我是那个永不停歇的色彩收集者。 🦋 每一个优化都是我培育的花朵,每一个特性都是我放飞的蝴蝶…

字节跳动GR-3:可泛化、支持长序列复杂操作任务的机器人操作大模型(技术报告解读)

1.总结 GR-3 是一个大规模的视觉 - 语言 - 动作(VLA)模型。它对新物体、新环境以及含抽象概念的新指令展现出较好的泛化能力。此外,GR-3 支持少量人类轨迹数据的高效微调,可快速且经济地适应新任务。GR-3 在处理长周期和灵巧性任…

713. 乘积小于 K 的子数组

中等 给你一个整数数组 nums 和一个整数 k ,请你返回子数组内所有元素的乘积严格小于 k 的连续子数组的数目。 示例 1: 输入:nums [10,5,2,6], k 100 输出:8 解释:8 个乘积小于 100 的子数组分别为:[10…

【算法】 SM2、FSRS、SuperMemo算法实现艾宾浩斯记忆曲线,通过以上算法你也可以开发出单词记忆软件

有那些算法可以实现艾宾浩斯单词记忆 用户: 有那些算法可以实现艾宾浩斯单词记忆 元宝: 以下是基于 艾宾浩斯遗忘曲线 的智能记忆算法实现方案,结合 间隔重复算法 与 现代机器学习技术,提供从理论到实践的完整解决方案: 一、核心算法原理 1. …

SQL167 连续签到领金币

SQL167 连续签到领金币 题目描述 用户行为日志表 tb_user_log iduidartical_idin_timeout_timesign_in110102021-07-07 10:00:002021-07-07 10:00:091210102021-07-08 10:00:002021-07-08 10:00:091310102021-07-09 10:00:002021-07-09 10:00:42141010 2021-07-10 10:00:00 …

PHP性能优化与高并发处理:从基础到高级实践

引言 在当今高流量的互联网环境中,PHP应用的性能优化变得至关重要。本文将全面探讨PHP性能优化的各个层面,从基础优化技巧到高级并发处理方案,帮助开发者构建高性能的PHP应用。 基础性能优化 OPcache配置优化 ; php.ini 推荐OPcache配置 [opcache] opcache.enable=1 opc…

C++ std::map erase() 和迭代器详解:常见面试陷阱与深入理解

在使用 C 的 std::map 时,配合 erase() 和迭代器的使用是一个经典面试点,也是实际开发中经常出错的地方。本文将深入讲解 erase() 的行为、end() 的本质以及迭代器失效规则,帮助你写出更健壮的代码。1. erase(it) 的行为当你使用 erase(it) 删…

求职招聘小程序源码搭建招聘小程序开发定制人力资源系统

身份:求职者、企业求职者:完善简历,简历投递企业:企业入驻,查看简历企业会员:半年 、年度 权益:每日发布条数、刷新条数,简历下载数量聊天:求职者可以和企业聊天招聘会…

【31】C# WinForm入门到精通 ——保存文件SaveFileDialog 【属性、方法、事件、实例、源码】

WinForm 是 Windows Form 的简称,是基于 .NET Framework 平台的客户端(PC软件)开发技术,是 C# 语言中的一个重要应用。 .NET 提供了大量 Windows 风格的控件和事件,可以直接拿来使用。 本专栏内容是按照标题序号逐渐…

socket网络编程(1)

socket网络编程(1) 设计echo server进行接口使用 生成的Makefile文件如下 .PHONY:all all:udpclient udpserverudpclient:UdpClient.ccg -o $ $^ -stdc17 -static udpserver:UdpServer.ccg -o $ $^ -stdc17.PHONY:clean clean:rm -f udpclient udpserver…

数据集:机器学习的基石

三、数据集:机器学习的基石1. sklearn 玩具数据集:快速入门的理想选择1.1 玩具数据集的特点与价值sklearn 内置的玩具数据集(Toy Datasets)是机器学习入门的绝佳资源。这类数据集通常具有以下特点:数据量小&#xff1a…

SQL排查、分析海量数据以及锁机制

1. SQL排查 1.1 慢查询日志: mysql提供的一种日志记录, 用户记录MySQL中响应时间超过阈值的SQL语句(long_query_time, 默认10秒), 慢查询日志默认是关闭的, 建议开发调优时打开, 最终部署的时候关闭 1.1.1 检查是否开启了慢查询日志 show variables like %slow_query_log%;临…

conda 安装prokka教程

本章教程,记录如何在wsl2+ubuntu下载通过conda安装prokka软件包。 Prokka 是一个快速的、功能强大的基因组注释工具,特别适用于细菌基因组的注释。它能够自动化完成从基因组序列到功能注释的整个流程,包括基因的识别、功能预测和注释,并且支持多种文件格式输出,广泛应用于…

CSS3 圆角

CSS3 圆角 引言 CSS3圆角是现代网页设计中非常重要的一项功能,它使得网页元素的外观更加平滑、美观。本文将详细介绍CSS3圆角的概念、实现方法以及相关属性,帮助您更好地掌握这一技巧。 CSS3圆角概念 CSS3圆角指的是通过CSS3属性为元素(如div…

牛顿-拉夫森法求解非线性方程组

牛顿-拉夫森法(Newton-Raphson method)是一种用于求解非线性方程组的迭代方法。该方法通过线性化非线性方程组,并逐步逼近方程组的解。以下是牛顿-拉夫森法求解非线性方程组的详细步骤和MATLAB实现。 1. 牛顿-拉夫森法的基本原理 对于非线性方…

Windows系统使用命令生成文件夹下项目目录树(文件结构树)的两种高效方法

Windows系统使用命令生成文件夹下项目目录树(文件结构树)的两种高效方法前言:**方法一:tree 命令 —— 快速生成经典目录树****方法二:PowerShell —— 可以精准过滤“降噪”的命令**这份列表非常精炼,只包…

react中暴露事件useImperativeHandle

注:本页面模块主要是使用 useImperativeHandle ,一、概述1、要点hooks 中的暴露事情件方法useImperativeHandle,需要和forwardRef、ref 结合一起使用。1、外层校验的时候会校验里面所有需要校验的验证2、基础使用二、demo案例1、场景1、弹框打…

【论文阅读】-《RayS: A Ray Searching Method for Hard-label Adversarial Attack》

RayS:一种用于硬标签对抗攻击的光线搜索方法 Jinghui Chen University of California, Los Angeles jhchencs.ucla.edu Quanquan Gu University of California, Los Angeles qgucs.ucla.edu 原文链接:https://arxiv.org/pdf/2006.12792 摘要 深度神经…