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

通过DrissionPage爬取某获客平台内容

前言

最近想用自己之前写的脚本看看市场行情,结果发现代码竟然跑不通了!

仔细一查,发现拓客吧做了三个改动:

  • 反爬检测:打开开发者工具就进入无限循环,或者整个网页闪退关闭
  • 分页机制取消:以前通过page 参数翻页的方式失效了。
  • 薪资数据加密:搜索结果页的薪资数字变成了乱码,用字体加密的方式防止直接采集。

不过我发现虽然搜索结果页加密了,但每个详情页里的薪资,还是明文的!

基于这个发现,我的主要调整思路是:

  • 临时禁用JavaScript,让页面以纯静态形式加载。
  • 适配新的页面加载方式,改为滚动加载职位信息。
  • 无视搜索结果页的薪资加密,直接解析详情页。

缺点:由于是通过自动化的方式采集数据,效率比较一般

优点:稳定,不容易触发反爬,试了五个关键词采集,也就是1500个详情页解析,个人的话应该够用

我把脚本整理了一下,发出来供有类似需求的朋友参考。欢迎交流~

1.cookie处理

脚本打开浏览器后,打开登录界面,扫码登录,等待脚本保存cookie

def get_cookie(self, url='https://www.tuokeba.com', timeout=30): """获取Cookie(手动登录)""" logger.info("请打开登录窗口,扫码登录您的个人账号...") self.page.get(url) time.sleep(timeout) # 等待手动登录 cookies = self.page.cookies() self.file_manager.save_json(cookies, self.config.cookie_file) logger.info(f"Cookie已保存到{self.config.cookie_file}") def load_cookie(self) -> bool: """加载Cookie""" if not os.path.exists(self.config.cookie_file): logger.warning(f"Cookie文件不存在: {self.config.cookie_file}") return False logger.info("开始加载Cookie") self.page.get("https://www.tuokeba.com") time.sleep(2) cookies = self.file_manager.load_json(self.config.cookie_file) for cookie in cookies: self.page.set.cookies(cookie) self.page.refresh() time.sleep(2) logger.info("Cookie加载完成") # 保存首页HTML if self.config.save_html_debug: self.file_manager.save_html(self.page.html, "01_首页_加载Cookie后") return True

2.首页处理

2.1 前置步骤(绕过反爬检测,仅调试时勾选!)

注:正常访问网站时发生异常(比如一直在空白页加载),可能是这个禁用js的选项没有取消勾选,取消勾选后再刷新网站即可正常访问

由于目标网站设置了严格的反爬虫机制,直接按F12进入开发者工具,网站会闪退。我们可以通过临时禁用浏览器JavaScript来绕过大部分检测,让页面以纯静态形式加载,这个模式下我们可以随意定位元素。

操作步骤:

  1. 打开浏览器,按F12进入开发者工具
  2. 点击右上角的齿轮图标⚙进入设置
  3. 向下找到"Debugger"(调试器)部分
  4. 勾选"Disable JavaScript"(禁用JavaScript)

图示:

http://www.jsqmd.com/news/830469/

相关文章:

  • Windhawk完全指南:5步打造你的专属Windows系统
  • 香港运输署:運輸策劃及設計手冊 2026
  • 设备数据采集项目进度
  • Android音视频应用开发中的性能与功耗优化策略
  • HEC-RAS洪水淹没分析实战(2):考虑下渗洪水模拟
  • 基于 HarmonyOS 6.0 的应用开发实践:页面构建与界面优化解析
  • 亲身测试从申请API Key到成功发出第一个请求的全流程耗时
  • 基础实战:实现简单的图像轮廓检测(入门级)
  • CSS 选择器完全解析:从入门到精准控制样式
  • Mermaid Live Editor:免费实时图表编辑器终极指南,让技术绘图简单到令人惊叹
  • 基于Home Assistant与Zigbee2MQTT构建自主可控的智能家居控制中心
  • 自动化测试发现问题关联Jira包问题单并上传日志文件和截图
  • PromptOptimizer:基于熵优化的LLM提示词压缩技术深度解析
  • CircuitPython库包管理利器:circup bundle-remove命令详解与实战
  • 告别第三方工具:用Windows 10自带的OpenSSH Server实现远程命令行管理
  • 一文详解C++的程序流程控制
  • 鸿蒙开发中的性能与功耗优化策略
  • 重新定义网易云音乐体验:解锁网页版隐藏功能的黑科技指南
  • JavaScript 回调函数(Callbacks)
  • 视频格式完全解析:容器与编码的区分、选择与实战指南
  • 27考研数学 复盘题号记录
  • Python新手教程五分钟完成Taotoken配置并发出第一个AI请求
  • 终极.NET程序集调试与编辑指南:dnSpyEx完整教程
  • 为什么MarkText能成为开发者最爱的Markdown编辑器?深度解析其技术架构与用户体验
  • 短视频文案提取怎么做?2026短视频文案提取软件排行榜及推荐
  • 啪的一下,论文就出来了
  • 基于Circuit Playground的互动冰球:从硬件选型到MakeCode编程全解析
  • 如何快速掌握AMD Ryzen调试工具:SMUDebugTool完整使用指南
  • 5分钟搞定缠论分析:ChanlunX通达信插件的终极简单指南
  • 探索霞鹜文楷:一款让中文排版更优雅的开源字体