type
status
date
slug
summary
tags
category
icon
password
我虽然没有系统性地学习过爬虫技术,但在需要时会通过 Python 进行简单实现。
在实践过程中学习,这里记录下对不同网站应该如何进行爬取。
案例1
背景
女朋友要每天刷公告:https://www.chinamoney.com.cn/chinese/zdsx/。需要关注公告中有没有出现关键词,还有一个几百个公司的关注列表,刷起来比较麻烦。

解决方案
- 每天自动爬取前一天的公告中包含【关键词】+【公司名列表】的公告,并通知给她。
- 对比网页源代码和 F12 中的元素选项卡,发现要爬取的网页元素是动态的。
- 查看 Fetch/XHR 请求,定位到相应中返回想要内容的请求:

Fetch/XHR 是浏览器网络请求面板中的一个分类,用于显示页面发起的 AJAX 异步请求和 API 调用。
- 右键复制为 cURL (Bash),填入 Convert curl commands to code 中,得到对 api 发起请求的 Python 代码。响应内容是 JSON 格式,使用 response.json() 方法将其解析为 Python 字典。
- 拓展成完整的自动化脚本,逐步完善爬取逻辑。
技术实现
- 通知方式:发送邮件
- 部署方式:Github Actions
遇到的问题
- 问题1
- 本地开了全局代理+规则模式,刚开始使用 requests 库来做请求,发现有时报 403 错误。
- 原因是 requests 库会走全局代理,
- 问题2
想通过Github Actions部署,但是该 api 似乎对来自 Github 的 ip 进行了屏蔽。似乎不是这个原因。- 根据实验,更换代理,使用不同的ip访问先用浏览器正常加载一次页面,之后就可以通过这个 api 获取数据了。
- 所以修改代码,先用 playwright 动态加载一次页面,之后就可以通过这个 api 获取数据了。
Playwright 是一个自动化浏览器测试工具,可以模拟真实用户在浏览器中的操作,特别适用于需要处理动态加载内容的网页爬虫场景。它支持多种主流浏览器,能够执行JavaScript并等待页面完全加载。
- 作者:Chenastron
- 链接:http://chenastron.xyz/article/19b48e05-8beb-8031-a32f-e590d1731969
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。



