返回介绍

7.1 动态网页及其爬取方法

发布于 2025-04-21 19:15:27 字数 1577 浏览 0 评论 0 收藏

7.1.1 动态网页的含义

动态网页是跟静态网页相对应的一种网页编程技术。静态网页随着 HTML 代码的生成,页面的内容和显示效果基本上不会发生变化 - 除非修改页面代码。动态网页则不然,页面代码虽然没有变,但是显示的内容却是可以随着时间、环境或者数据库操作的结果而发生改变的。动态网页一般使用被称为 AJAX 的快速动态创建网页技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分内容进行更新。例如链家网移动页面的经纪人列表页,如图 7-1 所示。

图 7-1 链家网移动页面的经纪人列表页

随着向下拉滚动条,经纪人数据会被不断加载出来,但是 URL 却没有任何变化,这就是一个动态加载的网页。36 氪的 7×24h 快讯页面(http://36kr.com/newsflashes)与链家移动端这种情况基本相同,只要往下拉动滚动条,就会不断有新的文章被加载。再如,初次打开李开复老师在知乎的粉丝页面,我们感觉不到它与普通静态页面的任何区别,但是在 Chrome 浏览器中单击右键,在弹出的菜单中选择“查看网页源码”,查看它的源码(见图 7-2),就会发现源码的后半部分与前面完全不同,不像是正常的 HTML 代码。

图 7-2 李开复在知乎的粉丝页面源码

之所以源码显示不同,是因为页面下半部分内容是动态加载出来的,新浪微博个人页也有这样的特点,读者可以自己看一下它的源码。

总结起来,对编写网络爬虫来说,可以通过两种简单办法判断一个网页是否是动态网页。

(1)是否在 URL 不变或者未刷新的情况下,能够加载新的信息。

(2)网页的源码结构与显示不同。

7.1.2 动态网页的爬取办法

动态网页 AJAX 技术实质是通过使用 XHR 对象获取到服务器的数据,然后通过 DOM 将数据插入到页面中呈现,数据格式可以是 xml 或 json 等。

针对 AJAX 技术在后台与服务器交换数据的特点,爬取动态加载的网页,可以考虑使用以下方法。

1. 分析页面请求,查找真实请求的 URL

既然 AJAX 技术是在后台与服务器交换数据,只要有数据发送过来,就肯定有发送到服务器的请求。只需找出它加载出页面的真实请求,然后构造并发送同样的请求即可。下一节将以爬取链家网站经纪人数据为例,详解如何找出真实请求并爬取这样的网站。

2. 使用 Selenium 模拟浏览器行为

Selenium 是一个自动化测试工具,也被广泛地用来做爬虫,在爬虫中主要使用 Selenium 解决动态网页的加载和渲染问题。Selenium 可以用代码操作浏览器,模拟人的操作。可以使用 Selenium,配合 headless 的浏览器(如 phantomjs、headless Chrome)来加载和渲染网页,然后提取需要的信息。本章第 3 节将使用 Selenium 和 Chrome 浏览器详细讲解编写 Selenium 爬虫的方法。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。