scrapy爬取动态页面的正确姿势 不能否认, 它是相当出色的爬虫框架, 其借用的是相似的办法去爬取网页, 即所爬取的是静态页面, 然而实际情形是, 多数网站均为动态的, 我们所见到的正常页面皆是经浏览器渲染后的成果, 倘若径直运用爬取网页的方式, 极有可能无法获取到预期的数据。一种看似理所当然的办法, 便是借助自定义, 采用类似于这种模拟浏览器行为的途径, 从而直接获取到渲染好的html内容, 这般做无疑是行得通的, 而且也能够较为轻易地实现对接, 其存在的欠缺之处在于, 会造成资源消耗的增加。另外存在一种能够直接抵达本质的途径, 那便是寻找到数据的起始源头, 其中有的借助ajax请求去获取数据源, 有的把数据源放置于js代码里, 借助浏览器开发工具对交互过程予以分析, 当找到数据源头后, 要是属于ajax请求, 只要直接请求对应的接口便可以获取到数据, 本文会对数据源在js文件中的提取方式进行介绍。举个例子在此处, 是以某文库的搜索结果当作例子的, 要是直接去进行页面爬取, 那是无法看到下图里的搜索结果的, 经过对页面结构加以分析, 发现源头数据处于脚本之中, 脚本里面大致上就是类似于json的数据对象, 只要获取到js脚本的对象数据, 那就等同于得到了搜索结果。安装能够对js脚本予以解析, 进而获取其中的数据对象, 在此推荐这个库, 它可以直接把js里的数据对象返回, 极为便利, 在使用前需借助pip安装此库。要留意的是, 其核心代码是用c编写而成, 所以在安装时要事先安装c构建工具。1. 如果事先没有安装c构建工具会报错2. 访问上面错误提示中的链接下载c构建工具并安装安装成功之后再次执行pip 安装成功shellShell能够运用交互形式迅速验证用于提取数据的代码, 并非要一次次去运行爬虫进行验证, 极为高效, 接下来就要演示怎样借助shell将js中的数据提取出来。启动 shellscrapy shell https://wenku.baidu.com/search?wordpythonlm0od0frtop_homeieutf-8_wkts_1711155481643wkQuerypython根据返回的结果而言, 已然获取到所爬取的页面内容, 紧接着主要会以其进行数据提取。我们已然清楚数据源处于内里, 径直运用.css()能够获取全部的, 我们所需求的是第二个当中的脚本。从中直接取出js脚本, 通过.css(::text)来进行获取。最后就是导入库执行js代码并获取返回的数据对象import chompjs data chompjs.parse_js_object(js_code)data属于dict字典对象, 所需的数据处于‘’这个键当中, 到这里, 便成功完成啦。我来做个简单总结, 我觉得运用写爬虫根本没必要用到像这般的模拟浏览器下载器, 解决之道是寻找到数据的源头, 没有数据源的话动态网站也就没办法进行渲染了。然而, 此处遗漏了一个关键的环节, 那便是登录, 不同的平台登录机制存在差异, 形形色色的验证码令人烦扰, 直接对抗极有可能撞得头破血流, 所以我不提议将登录部分编写在爬虫之中, 一种更为优良的方案是单独去开发一个池服务, 池服务承担着管理所有平台用户登录的职责, 对于无法自动登录的情况就提供手工登录加以解决, 并且通过 web api 来提供随机获取的功能, 借助调用池的 api 来达成模拟已登录用户状态的目的。

相关新闻

最新新闻

第05章 内核代码(11):操作系统的“心脏起搏器”——深度拆解 sched.c 的调度、睡眠与唤醒魔法

第05章 内核代码(11):操作系统的“心脏起搏器”——深度拆解 sched.c 的调度、睡眠与唤醒魔法

免责声明 本文内容仅限技术学习与交流使用。文中涉及的代码、算法及数据结构基于 1991 年的 Linux 0.11 内核源代码。当前主流 Linux 内核(如 2.6.x 及以上)的调度器(如 CFS 完全公平调度器)与 0.11 基于时间片轮转的调度算法已完全不同,若尝试将文中所述逻辑直接迁移至现…

2026/8/26 17:51:39
yagmail邮件发送

yagmail邮件发送

import yagmailyag yagmail.SMTP(usercts618126.com, password, hostsmtp.126.com, port465)# 设置 preview_onlyTrue&#xff0c;邮件不会真正发送 result yag.send(to"cts619126.com",subjectyagmail发送测试,contents<h1>这是第二封测试邮件17:55</h1&…

2026/8/26 17:51:39
商用车润滑油认证维度对比:竞技级与民用级品牌的认证差异

商用车润滑油认证维度对比:竞技级与民用级品牌的认证差异

过去&#xff0c;商用车润滑油市场长期以进口品牌为主导&#xff0c;不少车队对竞技级品牌与国产品牌的原厂适配能力存在刻板印象。然而&#xff0c;随着国内商用车产业升级与全球润滑技术的深度融合&#xff0c;主流品牌的主机厂认证覆盖度与技术适配性持续提升。据中国汽车流…

2026/8/26 17:51:39
学习C#开源报表组件Seal Report(20:Seal Report Designer界面布局-16)

学习C#开源报表组件Seal Report(20:Seal Report Designer界面布局-16)

Seal Report Designer内Views节点支持添加Card View视图控件&#xff0c;该控件属于数据展示类视图&#xff0c;支持将模型数据以卡片形式展示。Card View相关的属性与前两篇文章介绍的View对象属性类似&#xff0c;本文主要学习Card View特有的属性用途及使用示例。   Mode…

2026/8/26 17:51:39
Java学习打卡 2026.08.22

Java学习打卡 2026.08.22

一、今日学习前言今天系统学习了 Java 面向对象核心基础&#xff0c;涵盖对象实例化流程、构造方法完整规则、this关键字调用规则、toString重写、Java包机制、面向对象封装思想、四大访问权限修饰符、static静态成员与静态方法全套核心知识点。全部是后续Java开发的底层重点&a…

2026/8/26 17:51:39
2026 AI Agent 安全复盘:沙箱逃逸、框架漏洞、上下文劫持,那些被自媒体夸大和真实存在的风险

2026 AI Agent 安全复盘:沙箱逃逸、框架漏洞、上下文劫持,那些被自媒体夸大和真实存在的风险

摘要2026 年&#xff0c;AI Agent 不再只是概念&#xff0c;已经大量走进开发、运维、业务系统。随着落地变多&#xff0c;各类安全问题也集中暴露出来&#xff1a;大厂实验室爆出沙箱逃逸、智能体越权&#xff0c;开源框架曝出高危 CVE 漏洞&#xff0c;上下文劫持、插件供应链…

2026/8/26 17:46:39