【发布时间】:2017-07-24 03:27:45
【问题描述】:
这个问题很难表述,但举个例子就很容易理解了。
我使用 R 来解析 html 代码。
在下面,我有一个名为html的html代码,然后我尝试提取//span[@class="number"]中的所有值以及//span[@class="surface"]中的所有值:
html <- '<div class="line">
<span class="number">Number 1</span>
<span class="surface">Surface 1</span>
</div>
<div class="line">
<span class="surface">Surface 2</span>
</div>'
page = htmlTreeParse(html,useInternal = TRUE,encoding="UTF-8")
number = unlist(xpathApply(page,'//span[@class="number"]',xmlValue))
surface = unlist(xpathApply(page,'//span[@class="surface"]',xmlValue))
number 的输出是:
[1] "Number 1"
surface 的输出是:
[1] "Surface 1" "Surface 2"
然后,当我尝试 cbind 这两个元素时,我不能,因为它们的长度不同。
所以我的问题是:我该怎么做才能得到number 的输出:
[1] "Number 1" NA
然后我可以结合number和surface。
【问题讨论】:
-
您是否试图确保数字和表面对保持在一起?因为如果你有第三行只有一个数字,这种方法很容易混淆。然后两个列表都会返回两个元素,但它们不一定是配对的。
标签: html r xpath web-scraping html-parsing