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

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.xdnf.cn/news/1214515.html

相关文章:

  • 下拉加载问题
  • 电商项目_核心业务_分布式事务
  • 【AI论文】单一领域能否助力其他领域?一项基于数据的、通过强化学习实现多领域推理的研究
  • 少林寺用什么数据库?
  • web:html表单提交数据
  • 亚马逊广告进阶指南:如何合理调配预算
  • 网络的学习 2 Socket
  • 深入剖析 RocketMQ 分布式事务:原理、流程与实践
  • GitPython02-Git使用方式
  • 大模型对比评测:Qwen2.5 VS Gemini 2.0谁更能打?
  • 《C++二叉搜索树原理剖析:从原理到高效实现教学》
  • 基于 Amazon Bedrock 与 Anthropic Claude 3 智能文档处理方案:从扫描件提取到数据入库全流程实践
  • 智能Agent场景实战指南 Day 26:Agent评估与性能优化
  • Python正则表达式精准匹配独立单词技巧
  • 【Dolphinscheduler】docker搭建dolphinscheduler集群并与安全的CDH集成
  • python | numpy小记(八):理解 NumPy 中的 `np.meshgrid`
  • 嵌入式linux驱动开发:什么是Linux驱动?深度解析与实战入门
  • 如何通过IT-Tools与CPolar构建无缝开发通道?
  • OriGene:一种可自进化的虚拟疾病生物学家,实现治疗靶点发现自动化
  • 【ESP32设备通信】-LAN8720与ESP32集成
  • MOEA/DD与MOEA/D的区别
  • 2024 年 NOI 最后一题题解
  • 算法精讲:二分查找(二)—— 变形技巧
  • 【Excel】制作双重饼图
  • 关于windows虚拟机无法联网问题
  • VMware16安装Ubuntu-22.04.X版本(并使用桥接模式实现局域网下使用ssh远程操作Ubuntu系统)
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-51,(知识点:stm32,GPIO基础知识)
  • C++菱形虚拟继承:解开钻石继承的魔咒
  • 简单线性回归模型原理推导(最小二乘法)和案例解析
  • 线性回归的应用