【发布时间】:2014-02-02 00:53:01
【问题描述】:
我正在网页抓取this website(葡萄牙语)。
当您使用谷歌浏览器时,xpath 命令//div[@class='result-ofertas']//span[@class='location']/a[1] 会正确返回待售公寓的附近区域。您可以使用 Chrome 的扩展程序 xpath helper 自己尝试一下。
好的。所以我尝试用R下载网站来自动提取数据,使用XML包:
library(XML)
site <- "http://www.zap.com.br/imoveis/sao-paulo+sao-paulo/apartamento-padrao/aluguel/?rn=104123456&pag=1"
html.raw <- htmlTreeParse(site,useInternalNodes=T, encoding="UTF-8")
但是当我在R中下载网站时,页面源已经不一样了。
前面的xpath命令结果为null:
xpathApply(html.raw, "//div[@class='result-ofertas']//span[@class='location']/a[1]", xmlValue)
但是,如果您手动将网站下载到您的计算机而不是使用 R 下载,那么上面的 xpath 就可以正常工作。
似乎 R 正在下载另一个网页(“移动”网页,正在下载 this one instead of the correct one),而不是 Chrome 中显示的网页。
我的问题不在于如何提取 R 正在下载的这个“不同”页面的信息。我实际上可以使用下面的 xpath 命令来处理它:
xpathApply(html.raw, "//p[@class='local']", xmlValue)
但我真的很想了解为什么以及如何发生这种情况。
更具体地说:
- 这里发生了什么?
- 为什么两个不同的网页(Chrome 和 R),即使地址相同?
- 有没有办法强制 R 下载我在 Chrome 中看到的确切网页(这很有用,因为我通常使用 xpath helper 扩展程序测试 xpath 命令)。
【问题讨论】:
标签: xml r google-chrome xpath web-scraping