【问题标题】:Is there any fast ways to scrape a website with infinite scroll?有没有什么快速的方法可以无限滚动抓取网站?
【发布时间】:2014-12-29 03:17:03
【问题描述】:

我正在尝试使用 python 来抓取一个使用无限滚动实现的网站。实际上,网络是 pinterest。我知道如何使用 selenium webdriver 来无限滚动抓取网页。不过webdriver基本是模仿访问网页的过程,速度慢,比使用BeautifulSoup和urllib爬取慢很多。你知道用无限滚动抓取网页的任何高效方法吗?谢谢。

【问题讨论】:

    标签: python web-scraping


    【解决方案1】:

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

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

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

    【讨论】:

    • 你的意思是 selenium.webdriver.PhantomJS 还是 Javascript 中的直接 phantomjs
    • 我的偏好是直接 phantomjs,因为它涉及的开销更少,但老实说,与 selenium 一起使用时差异很小。 Selenium + phantomjs 比在非无头浏览器上使用 webdriver 快得多。
    • @bspates 我是新手。我不太喜欢您提到的第一种方法(检查请求结构并直接访问相同的端点)。你能以下面的网址为例,告诉我怎么做吗? link
    • @bspates 另外,有没有关于 selenium.webdriver.PhantomJS 使用的教程?我对Java一窍不通,用PhantomJS会痛吗?
    • Selenium 有多种语言的客户端库,我找到了一个 Python 的 here
    猜你喜欢
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 2011-10-22
    • 2020-05-30
    相关资源
    最近更新 更多