Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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
使用xpathapply仅获取webscrapes向量中每行的第一个h2节点_R_Xpath_Web Scraping_Sapply - Fatal编程技术网

使用xpathapply仅获取webscrapes向量中每行的第一个h2节点

使用xpathapply仅获取webscrapes向量中每行的第一个h2节点,r,xpath,web-scraping,sapply,R,Xpath,Web Scraping,Sapply,我试图解析一个(大的)刮取的html向量,更具体地说是,但是向量中的一些页面中有两个,因此替换结果是行数多于数据。我的问题:如何在每个obs中只取第一个//h2 这是我尝试的代码: data$header = unlist(xpathSApply(htmlParse(data$html, asText=TRUE), '(//h2)[1]', xmlValue)) 这只给了我第一次机会。该代码为我提供了所有h2s: data$header = xpathApply(htmlParse(phill

我试图解析一个(大的)刮取的html向量,更具体地说是,但是向量中的一些页面中有两个,因此替换结果是行数多于数据。我的问题:如何在每个obs中只取第一个//h2

这是我尝试的代码:

data$header = unlist(xpathSApply(htmlParse(data$html, asText=TRUE), '(//h2)[1]', xmlValue))
这只给了我第一次机会。该代码为我提供了所有h2s:

data$header = xpathApply(htmlParse(philly$html, asText=TRUE), '//descendant::h2[1]', xmlValue)
谢谢你的帮助

样本有两个:

<div id="tutors">

 <h1>Tutors</h1>
<div class="tutor">
<h2>John</h2>
 <p>...</p>

导师
约翰


玛丽

大卫


通过包含整个根路径解决了此问题:

data$header = unlist(xpathApply(htmlParse(data$html, asText=TRUE), '/html/body/h2', xmlValue))
data$header = unlist(xpathApply(htmlParse(data$html, asText=TRUE), '/html/body/h2', xmlValue))