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 是否缺失。

相关推荐
微风中的麦穗1 小时前
【MATLAB】MATLAB R2025a 详细下载安装图文指南:下一代科学计算与工程仿真平台
开发语言·matlab·开发工具·工程仿真·matlab r2025a·matlab r2025·科学计算与工程仿真
2601_949146531 小时前
C语言语音通知API示例代码:基于标准C的语音接口开发与底层调用实践
c语言·开发语言
开源技术2 小时前
Python Pillow 优化,打开和保存速度最快提高14倍
开发语言·python·pillow
学嵌入式的小杨同学2 小时前
从零打造 Linux 终端 MP3 播放器!用 C 语言实现音乐自由
linux·c语言·开发语言·前端·vscode·ci/cd·vim
Li emily3 小时前
解决港股实时行情数据 API 接入难题
人工智能·python·fastapi
wfeqhfxz25887823 小时前
农田杂草检测与识别系统基于YOLO11实现六种杂草自动识别_1
python
mftang3 小时前
Python 字符串拼接成字节详解
开发语言·python
0思必得03 小时前
[Web自动化] Selenium设置相关执行文件路径
前端·爬虫·python·selenium·自动化
石去皿3 小时前
大模型面试通关指南:28道高频考题深度解析与实战要点
人工智能·python·面试·职场和发展
jasligea4 小时前
构建个人智能助手
开发语言·python·自然语言处理