使用动态JavaScript内容爬取网站

5

我正在使用Python和BeautifulSoup4(我并不依赖它)来爬取一个网站。问题是,当我使用urllib获取页面的HTML时,它并不包括整个页面,因为其中一些内容是通过JavaScript生成的。有没有办法解决这个问题?


1个回答

10
基本上有两种主要的选择来继续进行:
  • 使用浏览器开发工具,查看哪些ajax请求将加载页面并在脚本中模拟它们,您可能需要使用json模块将响应json字符串加载到Python数据结构中
  • 使用像selenium这样的工具打开真正的浏览器。浏览器也可以是“无头”的,参见Headless Selenium Testing with Python and PhantomJS
第一种选择更难实现,一般来说更加脆弱,但不需要真正的浏览器,速度可能更快。
第二个选项更好,因为您可以获得任何其他真实用户获得的内容,并且不必担心页面如何加载。Selenium在定位页面上的元素方面非常强大 - 您可能根本不需要BeautifulSoup。但是,无论如何,这个选项比第一个选项慢一些。
希望这有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接