该任务的目标是在 IR 的搜索结果页面中提取关于论文标题的“href”,并将它们作为数据框。这个结果页面的结构不是很好:论文标题、问题信息、作者和下载按钮在同一个字段中,仅用“span”(在“title”、“issue”和“authors”之间)和“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”itemLine“的比赛,但根本没有URL。我的问题是:
- 如何准确定位论文标题的href?我使用第二层“html_nodes”来保存所有目标href。但是,“sup”标签下的“href”仍在“titleLine”中,“target”也在。我们可以使用“target”属性来定位正确的“href”但不让它们出现在“titleLine”中吗?
- 我们如何定位具有复杂“值”的属性?在上面的程序中,我只使用“href”。我以前尝试过使用“xpath 样式”,但没有帮助。我想使用命名空间来识别论文的URL,但是我看到ns可能只能从“xmlns”属性中提取,并且无法手动分配(如
titlehref <- xml_attrs(titleLine, "href", ns=”http://ir.las.ac.cn/handle”)
)
如何拟合这个IR的结构才能得到正确的结果?非常感谢。