【问题标题】:Scrape entire xml page within R, relenium在 R,relenium 中抓取整个 xml 页面
【发布时间】:2014-04-01 21:49:53
【问题描述】:

尝试抓取类似于以下链接的页面,该页面不会立即加载所有结果 - 它会等待您滚动到页面末尾,然后再加载更多结果。因此,当下面的代码运行时,它只会获取到目前为止已加载的结果(在本例中为 20,000 个中的 16 个)。

https://www.rbauction.com/search?id=ar&region=Europe&s=YXI3fE49NDI5NDk1NzE5MCs0Mjk0MjM4MzMy

暂时使用这个基本代码:

require(relenium)
require(XML)
firefox=firefoxClass$new()
url="https://www.rbauction.com/search?id=ar&region=Europe&s=YXI3fE49NDI5NDk1NzE5MCs0Mjk0MjM4MzMy"
url=sprintf(url)
firefox$get(url)
doc=htmlParse(firefox$getPageSource())
title=xpathSApply(doc, "//div[@class='display-text']",xmlValue)
title

这只会产生网页上的前 16 个“标题”(超过 20,000 个)。有任何想法吗?

不要

【问题讨论】:

    标签: xml r web-scraping


    【解决方案1】:

    在此处搜索其他内容时看到此查询。不知道现在回答是否为时已晚。我最近在另一个网站上遇到了类似的挑战。在这种情况下,诀窍是在源中找到模仿向下滚动动作的元素并使用 relenium 单击它。我无法访问上面的链接,所以我将演示我的示例。

    示例网址:http://www.snapdeal.com/products/computers?sort=plrty&

    以上页面一次仅显示 15/20 个产品。下面的代码模仿了向下滚动的动作

    代码:

    firefox$get("http://www.snapdeal.com/products/computers?sort=plrty&")

    buttonElement

    buttonElement$click()

    您只需将其放入循环中并根据结果总数和一次显示的结果重复。

    请注意,随着结果数量的增加并且您继续向下滚动,所有数据将继续在页面上,这将使这个过程变得非常缓慢。

    最终,我找到了一个替代方案,我能够理解不同页面的更改后的 url。虽然它们可能不会显示在地址栏中,但实际的 url 正在改变。只需探索源头,您应该就能找到它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      • 2019-02-16
      • 1970-01-01
      • 2016-08-09
      • 2021-09-30
      相关资源
      最近更新 更多