如何使用R

时间:2016-08-02 19:58:22

标签: html r web-crawler rvest

有人可以帮我提取 From 之后的测试,我想提取发件人姓名。它位于em标签的正上方。我正在使用python BeautifulSoup包。

以下是指向网页的链接:http://seclists.org/fulldisclosure/2016/Jan/0

我能够成功提取电子邮件标题,因为它是在标签中。 html页面中没有其他div或类。

这是页面的html代码: HTML Snippet

这是我尝试过的

url <- "http://seclists.org/fulldisclosure/2016/Jan/0"
doc <- htmlTreeParse(url, useInternalNodes = T, trim = T,      addAttributeNamespaces = T, encoding = "utf-8")

pre_text1 <- unlist(xpathSApply(doc, "//em",xmlValue))

1 个答案:

答案 0 :(得分:1)

您可以使用以下xpath

提取它
require(rvest)
doc <- read_html("http://seclists.org/fulldisclosure/2016/Jan/0")
doc %>% 
  html_node(xpath = "/html/body/table[2]//tr[1]/td[2]/table//tr/td/text()[6]") %>% 
  html_text

结果:: Uğur Cihan KOÇ <u.cihan.koc () gmail com>

我是怎么到那儿的? enter image description here 从Chrome开始 - &gt;右键单击文本元素 - &gt;复制 - &gt;复制XPath。 不知何故,没有“复制选择器”。所以我猜你不能通过纯粹的css选择器来访问这个元素。

此xpath如下所示:

/html/body/table[2]/tbody/tr[1]/td[2]/table/tbody/tr/td/text()[1]

Rvest不会返回此xpath的任何元素。某种程度上tbody - 部分未被识别(不知道为什么)。删除并删除尾随[1]

/html/body/table[2]//tr[1]/td[2]/table//tr/td/text()

为您提供所需的结果。然后你可以在xpath中选择第6个元素,方法是添加[6],或者在 R 中过滤。