抓取动态网页(用Python解决内容采集不到的问题只有一个代码)

优采云 发布时间: 2021-11-11 08:09

  抓取动态网页(用Python解决内容采集不到的问题只有一个代码)

  我们在编写爬虫爬取页面的时候,大部分时候直接使用BeautifulSoup等静态爬取工具获取html源码是没有问题的。基本上你在浏览器上看到的和你爬取的html代码是有对应关系的。但是如果你采集有过很多网站,你很可能会遇到这样的情况,你在浏览器上看到的内容,你使用网站上的爬虫从网站采集 内容不同。这时候你可能会疑惑是不是有什么细节没有处理好,希望找出采集内容不可用的原因。有时您会发现一个网页使用加载页面将您带到另一个页面,但该网页的 URL 链接在此过程中并没有发生变化。比如下面的天眼查网站在反爬虫方面做了很多工作,使用Js动态加载就是其中之一。

  

  而这一切都是因为你的爬虫无法执行使页面产生各种神奇效果的JavaScript代码。如果 网站HTML 页面没有运行 JavaScript 代码,它可能与您在浏览器中看到的完全不同,因为浏览器可以正确执行 JavaScript 代码。

  然后使用Ajax或者DHTML技术来改变/加载页面的内容,可能有一些采集的方式,但是用Python解决这个问题只有两种方法:

  第一种类型:直接来自 JavaScript 代码 采集content

  第二:使用Python第三方库运行JavaScript,直接采集浏览器看到的页面

  今天简单介绍一种在PhantomJS“无头”浏览器中使用selenium工具实现动态页面爬取的方法。该方法是上述第二种方法的实现。

  Selenium 是一个强大的网络数据采集 工具,它最初是为网站 自动化测试而开发的。近年来,它被广泛用于获取准确的网站快照,因为它们可以直接在浏览器上运行。 Selenium 可以让浏览器自动加载页面,获取需要的数据,甚至可以对页面进行截图,或者判断是否对网站 进行了某些操作。但是Selenium没有浏览器,需要配合第三方浏览器使用。而PhantomJS就是这样一个存在,PhantomJS就是一个无头浏览器。它将网站加载到内存并执行页面上的Js,但不会向用户显示网页的图形界面。

  将 Selenium 和 PhantomJS 结合在一起,您可以运行一个非常强大的网络爬虫,它可以处理 cookie、JavaScript、Header 以及您需要做的任何事情。

  可以从PyPI网站()下载Selenium库,当然也可以使用第三方管理器(如pip)在命令行安装。 PhantomJS可以从它的官网下载(),应该是PhantomJS是一个功能齐全的(虽然headless)浏览器,不是Python库,所以不需要像其他Python库一样安装,也不能用点。使用时直接使用本地地址加载即可。

  (完)

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线