从OpenIR

时间:2017-11-12 10:35:35

标签: r rvest xml2

这项任务的目标是在IR的搜索结果页面中提取关于论文标题的“href”,并将它们作为数据框架。 此结果页面结构不合理:纸张标题,问题信息,作者和下载按钮位于同一字段中,仅由“span”(“标题”,“问题”和“作者”之间)和“sup”分隔“(在”作者“内部)。

results<-"http://ir.las.ac.cn/handle/12502/8473/browse?type=dateissued"
library(rvest)
resultsource <- read_html(results)
itemLine <- html_node(resultsource, xpath ='//tr[@class="itemLine"]')
# gether labels and values of item metadata in miscTable2
titleLine <- html_nodes(itemLine, xpath ='//span/a[@href][@target]')
titlehref <- xml_attrs(titleLine, "href")
resultstxt <- html_text(titleLine, trim = TRUE)

上面的程序运行没有错误,但“titleLine”有很多冗余,而“titlehref”只有比赛为'class &#34; itemLine&#34;'但根本没有网址。 我的问题是:

  1. 我们如何准确定位论文标题的href?我用了一个 第二层“html_nodes”保存所有目标href。然而, “sup”标签下的“href”仍在“titleLine”中,和 也是“目标”。我们可以使用“target”属性来定位右边 “href”但不要让它们出现在“titleLine”中?
  2. 我们如何找到具有复杂“价值”的属性?在该计划中 上面,我只使用“href”。我之前尝试过使用“xpath样式” 但没有帮助。我想使用名称空间来识别论文的URL, 但我看到可能ns只从“xmlns”属性中提取,并且 无法手动分配(如titlehref <- xml_attrs(titleLine, "href", ns=”http://ir.las.ac.cn/handle”)
  3. 如何拟合此IR的结构可以得到正确的结果?非常感谢。

2 个答案:

答案 0 :(得分:0)

您可以为所需的<a href="#" class="button">buttt</a>目标以及<span>

编制索引
<td>

^^中的HTML标签喜欢&#34;`...&#34;是它们的错误(它们也出现在渲染的浏览器视图中)。我认为有人在XSS预防方面做得太过分了。

答案 1 :(得分:0)

试试这个。

library(rvest)
url<-"http://ir.las.ac.cn/handle/12502/8473/browse?type=dateissued"
page<-html_session(url)

# DATA EXTRACTION
title<-html_nodes(page,css="strong") %>% html_text()
title<-title[5:length(title)]
download_link<-html_nodes(page, css= "span:nth-child(7) a+ a") %>% html_attr("href")
issue_information<-html_nodes(page, css= "i") %>% html_text()
authors<-html_nodes(page,css=".itemLine span:nth-child(5)") %>% html_text()

# CONVERT TO DATA FRAME
k<-data.frame(title,download_link,issue_information,authors)

在每个页面上运行代码以获取完整的数据框。

为了找到不同的元素,我使用了“SELECTOR GADGET”chrome add in,然后在代码中使用。