我正在使用xpathSApply(在XML包中)在R中搜索XML并且无法将属性拉出来.
首先,相关的XML片段:
<div class="offer-name">
<a href="http://www.somesite.com" itemprop="name">Fancy Product</a>
</div>
Run Code Online (Sandbox Code Playgroud)
我使用以下方法成功拉出了'Fancy Product'(即元素?)
Products <- xpathSApply(parsedHTML, "//div[@class='offer-name']", xmlValue)
Run Code Online (Sandbox Code Playgroud)
这需要一些时间(我是一个n00b),但文档很好,我可以利用这里有几个已回答的问题.我无法弄清楚如何拉出" http://www.somesite.com "(属性?).我推测它涉及将第三个术语从'xmlValue'更改为'xmlGetAttr',但我可能完全没有了.
仅供参考(1)我粘贴的片段上面还有2个父<div>,(2)这里是缩写的完整代码(我认为不相关,但为了完整性而包括在内)是:
library(XML)
library(httr)
content2 = paste(readLines(file.choose()), collapse = "\n") # User will select file.
parsedHTML = htmlParse(content2,asText=TRUE)
Products <- xpathSApply(parsedHTML, "//div[@class='offer-name']", xmlValue)
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用R中RCurl包的getURL函数从API中抓取页面上的数据.我的问题是当我使用R发出请求时,我无法复制在Chrome中打开URL时得到的响应基本上,当我在Chrome中打开API页面(下面的url)时它工作正常但是如果我在R中使用getURL请求它(或在Chrome中使用隐身模式)我得到'500内部服务器错误'响应而不是漂亮的我正在寻找的JSON.
有问题的网址/ API:http://www.bluenile.com/api/public/loose-diamond/diamond-details/panel?country = USA¤cy = USD&language = en-us&productSet = NN& sku = LD04077082
这是我在[R]中的(失败的)请求.
test2 <- fromJSON(getURL("http://www.bluenile.com/api/public/loose-diamond/diamond-details/panel?country=USA¤cy=USD&language=en-us&productSet=BN&sku=LD04077082", ssl.verifypeer = FALSE, useragent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36"))
Run Code Online (Sandbox Code Playgroud)
我的研究到目前为止 我首先在堆栈上查看了这个先前的问题并在我的useragent中添加了请求(没有解决问题但可能仍然是必要的): RCurl包中的getURL()命令的ViralHeat API问题
接下来,我查看了这篇有用的帖子,它指导了我的理由: R浏览器和GET/getURL之间的差异
我对解决方案的想法 这不是我的专业领域,但我的猜测是请求缺少完成请求所需的cookie(因此它在隐身模式下无法在我的浏览器中工作).我将成功请求的请求和响应与不成功的请求进行了比较:
成功要求:

不成功的请求:

有人有主意吗?我应该在RSelenium第二篇文章中尝试使用MrFlick建议的软件包.