尝试抓取类似于以下链接的页面,页面不会立即加载所有结果 - 它会等待您滚动到页面末尾,然后再加载更多结果。因此,当下面的代码运行时,它只会获取到目前为止已加载的结果(在此示例中为20,000中的16个)。
https://www.rbauction.com/search?id=ar®ion=Europe&s=YXI3fE49NDI5NDk1NzE5MCs0Mjk0MjM4MzMy
现在使用这个基本代码:
require(relenium)
require(XML)
firefox=firefoxClass$new()
url="https://www.rbauction.com/search?id=ar®ion=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)。有任何想法吗?
唐
答案 0 :(得分:1)
在此处搜索其他内容时看到此查询。不确定是否为时已晚。我最近在另一个网站遇到过类似的挑战。在这种情况下的技巧是在源中找到模仿向下滚动操作的元素,并使用relenium单击它。我无法访问上述链接,因此我将演示我的示例。
示例网址:http://www.snapdeal.com/products/computers?sort=plrty&
上面的页面一次只显示15/20个产品。下面的代码模仿了向下滚动动作
代码:
火狐$ GET(" http://www.snapdeal.com/products/computers?sort=plrty&&#34)
buttonElement< - firefox $ findElementByXPath(" // * [@ id =' seeMoreProducts']")
buttonElement $点击()
您只需将其置于循环中并重复,具体取决于一次性显示的结果总数和结果。
请注意,随着结果数量的增加而您继续向下滚动,所有数据将继续显示在页面上,这将使此过程非常缓慢。
最终,我找到了一个替代方案,我能够理解不同页面的更改URL。虽然它们可能不会显示在地址栏中,但实际的网址却在变化。只是探索源代码,您应该能够找到它。