Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用rvest在r中刮纸:如果缺少div,则返回NA_R_Rvest - Fatal编程技术网

使用rvest在r中刮纸:如果缺少div,则返回NA

使用rvest在r中刮纸:如果缺少div,则返回NA,r,rvest,R,Rvest,我正在尝试为四个div创建一个工具提示:射击类型、打击类型、时间和射击xg。偶尔有一个div不见了。例如,下面的[2]没有“工具提示射击xg”div 如果缺少四个组件中的任何一个,我如何循环使用div.tooltip并返回NA [1] "<div class=\"tooltip\" style=\"left: 37.5%; top: 36.5789%;\">\n<div class=\"tooltip-title\&q

我正在尝试为四个div创建一个工具提示:射击类型、打击类型、时间和射击xg。偶尔有一个div不见了。例如,下面的[2]没有“工具提示射击xg”div

如果缺少四个组件中的任何一个,我如何循环使用div.tooltip并返回NA

[1] "<div class=\"tooltip\" style=\"left: 37.5%; top: 36.5789%;\">\n<div class=\"tooltip-title\">\n<div class=\"tooltip-shoot-type\">Shot blocked</div>\n<div class=\"tooltip-blow-type\">Smith </div>\n<div class=\"tooltip-shoot-name\"></div>\n</div>\n<div class=\"tooltip-time\">a </div>\n<div class=\"tooltip-time\">Half 1, 09:18 28/01/18</div>\n<div class=\"tooltip-shoot-xg\">Expected goals: 0.09</div>\n</div>"

[2] "<div class=\"tooltip\" style=\"left: 54.7059%; top: 11.0526%;\">\n<div class=\"tooltip-title\">\n<div class=\"tooltip-shoot-type\">Own goal</div>\n<div class=\"tooltip-blow-type\">Johnson </div>\n<div class=\"tooltip-shoot-name\"></div>\n</div>\n<div class=\"tooltip-time\">h </div>\n<div class=\"tooltip-time\">Half 1, 14:36 28/01/18</div>\n</div>"

如果使用XPath选择器,则一个点(
)表示当前节点,您可以从中相对地找到子div。在本例中,代码如下所示:

divs <- pg %>% html_nodes("div.tooltip")
for (i in 1:length(divs)){
  shoot-type <- divs[i] %>% html_node(xpath = "./div[@class='tooltip-shoot-type']") %>% html_text()
  blow-type <- divs[i] %>% html_node(xpath = "./div[@class='tooltip-blow-type']") %>% html_text()
  time <- divs[i] %>% html_node(xpath = "./div[@class='tooltip-time']") %>% html_text()
  shoot-xg <- divs[i] %>% html_node(xpath = "./div[@class='tooltip-shoot-xg']") %>% html_text()
  # add code here to save data
}
divs%html\u节点(“div.tooltip”)
适用于(i/1:长度(divs)){
快照类型%html\u节点(xpath=“./div[@class='tooltip-shot-type']”)%>%html\u text()
blow-type%html\u节点(xpath=“./div[@class='tooltip-blow-type']”)%>%html\u-text()
时间%html\u节点(xpath=“/div[@class='tooltip-time']”)%>%html\u文本()
shoot xg%html_节点(xpath=“/div[@class='tooltip-shoot-xg']”)%>%html_text()
#在此处添加代码以保存数据
}

然后,如果节点中没有
工具提示shot xg
class div,
shot xg
将返回NA。

如果使用XPath选择器,一个点(
)将显示当前节点,您可以从中相对地找到子div。在本例中,代码如下所示:

divs <- pg %>% html_nodes("div.tooltip")
for (i in 1:length(divs)){
  shoot-type <- divs[i] %>% html_node(xpath = "./div[@class='tooltip-shoot-type']") %>% html_text()
  blow-type <- divs[i] %>% html_node(xpath = "./div[@class='tooltip-blow-type']") %>% html_text()
  time <- divs[i] %>% html_node(xpath = "./div[@class='tooltip-time']") %>% html_text()
  shoot-xg <- divs[i] %>% html_node(xpath = "./div[@class='tooltip-shoot-xg']") %>% html_text()
  # add code here to save data
}
divs%html\u节点(“div.tooltip”)
适用于(i/1:长度(divs)){
快照类型%html\u节点(xpath=“./div[@class='tooltip-shot-type']”)%>%html\u text()
blow-type%html\u节点(xpath=“./div[@class='tooltip-blow-type']”)%>%html\u-text()
时间%html\u节点(xpath=“/div[@class='tooltip-time']”)%>%html\u文本()
shoot xg%html_节点(xpath=“/div[@class='tooltip-shoot-xg']”)%>%html_text()
#在此处添加代码以保存数据
}

然后,如果节点中没有
工具提示shot xg
class div,
shot xg
将返回NA。

您可以共享从何处刮取的链接吗?您可以共享从何处刮取的链接吗?谢谢!我认为您为我澄清得最多的问题是如何使用html_node()查找特定的标记。我一直在使用html_nodes()快速抓取所有内容,这非常有效,除非缺少标记。再次感谢!谢谢我认为您为我澄清得最多的问题是如何使用html_node()查找特定的标记。我一直在使用html_nodes()快速抓取所有内容,这非常有效,除非缺少标记。再次感谢!