Rvest和xpath返回误导性信息

Rvest和xpath返回误导性信息,xpath,rvest,Xpath,Rvest,我正在使用rvest和xpath解决一些棘手的问题 我们的目标是把下一页删掉 并提取期货的名称 BTF21 BTG21 BTH21 等等,以获取完整的姓名列表 这些变量的xpath似乎是xpath='//a' 下面的代码没有提供相关信息,因此我的查询 library(rvest) url <- 'https://www.barchart.com/futures/quotes/BT*0' valuation_col <- url %>% read_html(

我正在使用rvest和xpath解决一些棘手的问题

我们的目标是把下一页删掉

并提取期货的名称

BTF21 BTG21 BTH21 等等,以获取完整的姓名列表

这些变量的xpath似乎是xpath='//a'

下面的代码没有提供相关信息,因此我的查询

  library(rvest)
  url <- 'https://www.barchart.com/futures/quotes/BT*0'


  valuation_col <- url %>%
  read_html() %>%
  html_nodes(xpath='//a')

  value <- valuation_col %>% html_text() 
库(rvest)
url%
html_节点(xpath='//a')
值%html\u text()

任何进一步获取信息的提示都是非常必要的。提前谢谢

网页抓取101:你有没有检查网站的HTML源代码,这些元素实际上都在那里?(不,浏览器开发工具中的DOM视图不是HTML源代码。请使用上下文菜单中的“查看源代码”)。感谢您的回复,最重要的是,感谢您的耐心,因为我是一名新加入scraping的人。我检查了控制台,似乎可以访问这个网站。这个链接似乎提供了大部分信息,但是如何从那里开始呢?因此该网站使用Ajax加载它显示的信息。如果您在浏览器的开发人员工具中查看请求,您可以看到响应是Ajax格式的,这实际上是一件好事,因为使用JSON比从HTML页面上刮取数字容易得多。但是,如果您尝试在父页面的上下文之外重复Ajax请求,则会从服务器得到“401 Unauthorized”响应,而不是实际数据。我怀疑这与Cookie和请求头有关。因此,您的任务是找出一种发出此请求的方法,以便服务器不会拒绝您。最简单的刮削/热链接保护是检查
referer
标题,因此尝试在
referer
设置为
的情况下重新发出请求https://www.barchart.com/futures/quotes/BT*0/期货价格“
。可能已经成功了。如果没有,他们也会检查Cookies和其他头文件,这使得它更复杂。这是一个反复试验的游戏,你必须很好地模拟“真实”浏览器的行为,以便服务器为你提供想要的文件。因此,是的,有机会获得数据,但不是通过网页抓取。您应该集中精力从代码中获取Ajax请求。不过,我不知道如何在R中做到这一点。