有没有快速的方法来刮取无限滚动的网站?

时间:2014-12-29 03:17:03

标签: python web-scraping

我正在尝试使用python来抓取一个用无限滚动实现的网站。实际上,网络是最好的。我知道如何使用selenium webdriver以无限卷轴刮取网页。但是,webdriver基本上模仿了访问Web的过程,并且速度慢,比使用BeautifulSoup和urllib进行抓取要慢得多。你知道有时候用无限卷轴刮网的有效方法吗?感谢。

1 个答案:

答案 0 :(得分:3)

无限滚动可能是在滚动时使用Ajax查询来检索更多数据。使用浏览器的开发工具检查请求结构并尝试直接命中同一个端点。通过这种方式,您可以获得所需的数据,通常采用json或xml格式。

在chrome中打开开发工具(在Windows中按Ctrl + shift + I)并切换到网络选项卡。然后开始滚动,当加载更多内容时,您应该看到新的网络活动。特别是Ajax请求,您可以按" xhr"进行过滤。单击新网络项,您将获得有关请求的详细信息,例如标题,请求正文,响应结构以及请求所命中的url(端点)。刮除这个网址与抓取一个网站是一样的,除了没有html可以通过格式化数据进行解析。

有些网站会尝试阻止此类行为。如果发生这种情况,我建议使用不含硒的phantomjs。它可以非常快(与硒相比)来模仿网站上的人际互动。