动态网页抓取(第四章:动态网页抓取((解析真实地址+selenium))
优采云 发布时间: 2022-01-16 12:06动态网页抓取(第四章:动态网页抓取((解析真实地址+selenium))
第 4 章:动态网页抓取(解析真实地址 + selenium)
由于网易云线程已停止,新写的第4章现已更新至此。请参考文章:
之前爬取的网页都是静态网页,这些网页在浏览器中显示的内容是在HTML源代码中。不过由于主流的网站都使用JavaScript来展示网页内容,不像静态网页,在使用JavaScript的时候,很多内容不会出现在HTML源代码中,所以爬取静态网页的技术可能不会工作正常使用。因此,我们需要使用两种动态网页抓取技术:通过浏览器检查元素解析真实网址和使用 selenium 模拟浏览器。
本章首先介绍动态网页的示例,让读者了解什么是动态网页抓取,然后利用以上两种动态网页抓取技术获取动态网页数据。
4.1 动态抓取示例
在开始爬取动态网页之前,我们还需要了解一个异步更新技术——AJAX(Asynchronous Javascript And XML)。它的价值在于可以通过在后台与服务器交换少量数据来异步更新网页。这意味着可以在不重新加载整个页面的情况下更新页面的某些部分。一方面减少了网页重复内容的下载,另一方面也节省了流量,所以AJAX被广泛使用。
与使用 AJAX 网页相比,如果传统网页需要更新内容,则必须重新加载整个网页。因此,AJAX 使 Internet 应用程序更小、更快、更友好。但是AJAX网页的爬取过程比较麻烦。
首先,我们来看一个动态网页的例子。打开作者的博客Hello World文章,文章的地址是:/2018/07/04/hello-world/。网址可能会有变化,请到作者博客官网查找Hello World文章地址。如图4-1所示,页面下方的评论是用JavaScript加载的,这些评论数据不会出现在网页的源代码中。
为了验证页面下方的评论是否加载了 JavaScript,我们可以查看该页面的网页源代码。如图 4-2 所示,放置评论的代码中没有评论数据,只有一段 JavaScript 代码。最终呈现的数据通过 JavaScript 提取并加载到源代码中进行呈现。
除了作者的博客,还可以在天猫电商网站上找到AJAX技术的例子。比如打开天猫iPhone XS Max的产品页面,点击“累计评论”,可以发现上面的url地址没有变化,整个网页也没有重新加载,网页的评论区也没有更新,如图4-3所示。
如图4-4所示,我们也可以查看这个产品网页的源码,里面没有用户评论,这段内容是空白的。
如果使用AJAX加载动态网页,如何抓取里面动态加载的内容?有两种方法:
(1)通过浏览器检查元素解析地址。
(2) 通过 Selenium 模拟浏览器抓取。
请查看第四章的其他章节
4.2 解析真实地址捕获
4.3 模拟浏览器通过selenium爬取