gpt4 book ai didi

r - 使用 R 进行网页抓取

转载 作者:行者123 更新时间:2023-12-04 11:15:37 27 4
gpt4 key购买 nike

我在从网站上抓取数据时遇到了一些问题。首先,我在网页抓取方面没有很多经验......
我的计划是使用 R 从以下网站抓取一些数据:
http://spiderbook.com/company/17495/details?rel=300795

特别是,我想提取本网站文章的链接。

到目前为止我的想法:

xmltext <- htmlParse("http://spiderbook.com/company/17495/details?rel=300795")
sources <- xpathApply(xmltext, "//body//div")
sourcesCharSep <- lapply(sourcesChar,function(x) unlist(strsplit(x, " ")))
sourcesInd <- lapply(sourcesCharSep,function(x) grep('"(http://[^"]*)"',x))

但这并没有带来预期的信息。在这里非常感谢一些帮助!谢谢!

最好的事物
克里斯托夫

最佳答案

你选择了一个棘手的问题来学习。

本站使用javascript加载文章信息。换句话说,链接加载一组脚本,这些脚本在页面加载时运行以获取信息(可能来自数据库)并将其插入到 DOM 中。 htmlParse(...)只需获取基本 html 并对其进行解析。所以你想要的链接根本不存在。

AFAIK 解决此问题的唯一方法是使用 RSelenium包裹。这个包本质上允许您通过看起来像浏览器模拟器的东西传递基本 html,它确实运行脚本。 Rselenium 的问题是你不仅需要下载软件包,还需要一个“Selenium Server”。 This link有一个很好的介绍 RSelenium .

完成后,在浏览器中检查源代码会显示文章链接都在 href 中。具有 class=doclink 的 anchor 标签的属性.这很容易使用 xPath 提取。永远永远永远永远不要使用正则表达式来解析 XML。

library(XML)
library(RSelenium)
url <- "http://spiderbook.com/company/17495/details?rel=300795"
checkForServer() # download Selenium Server, if not already presnet
startServer() # start Selenium Server
remDr <- remoteDriver() # instantiates a new driver
remDr$open() # open connection
remDr$navigate(url) # grab and process the page (including scripts)
doc <- htmlParse(remDr$getPageSource()[[1]])
links <- as.character(doc['//a[@class="doclink"]/@href'])
links
# [1] "http://www.automotiveworld.com/news-releases/volkswagen-selects-bosch-chargepoint-e-golf-charging-solution-providers/"
# [2] "http://insideevs.com/category/vw/"
# [3] "http://www.greencarcongress.com/2014/07/20140711-vw.html"
# [4] "http://www.vdubnews.com/volkswagen-chooses-bosch-and-chargepoint-as-charging-solution-providers-for-its-e-golf-2"
# [5] "http://investing.businessweek.com/research/stocks/private/snapshot.asp?privcapId=84543228"
# [6] "http://insideevs.com/volkswagen-selects-chargepoint-bosch-e-golf-charging/"
# [7] "http://www.calcharge.org/2014/07/"
# [8] "http://nl.anygator.com/search/volkswagen+winterbanden"
# [9] "http://nl.anygator.com/search/winterbanden+actie+volkswagen+caddy"

关于r - 使用 R 进行网页抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26692227/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com