识别网页上的HTML元素

时间:2016-03-12 01:40:31

标签: r

我在网上找到了一些示例R脚本。两者都完全符合我的期望,但我不确定如何解释HTML,所以我无法真正回溯这两个脚本。请向我解释一下。

R如何知道在下面的示例中查找名为'elo'的表?

elo = htmlParse("http://tennisabstract.com/reports/atp_elo_ratings.html")
class(elo)
elo.table = readHTMLTable(elo, header=T, which=5,stringsAsFactors=F)
elo.table

同样,R如何知道在下面的示例中查找名为'#gsc_a_b .gsc_a_c'的html节点?

library(rvest)
library(ggplot2)

page <- read_html("https://scholar.google.com/citations?user=sTR9SIQAAAAJ&hl=en&oi=ao")

citations <- page %>% html_nodes ("#gsc_a_b .gsc_a_c") %>% html_text()%>%as.numeric()

# citations 
# 148 96 79 64 57 57 57 55 52 50 48 37 34 33 30 28 26 25 23 22 

barplot(citations, main="How many times has each paper been cited?", ylab='Number of citations', col="skyblue", xlab="")

如果我转到两个页面并点击F12,我可以看到每个页面背后的所有HTML。我在第一个网址中搜索了elo,在第二个网址中搜索了#gsc_a_b .gsc_a_c。我在任何地方都看不到这些变量!我以为我知道如何阅读HTML,但这让我觉得我不知道它是如何工作的。或者,这有什么特别的诀窍吗?

我很欣赏R在这两种情况下如何解释HTML的任何/全部见解。

1 个答案:

答案 0 :(得分:0)

对于您的第一个示例,elo是变量名称,而不是HTML元素。代码将整个页面读入elo变量,并使用readHTMLTable提取表格元素。

对于第二个示例,您需要了解有关CSS选择器的更多信息。 .gsc_a_b表示class gsc_a_b的HTML元素。 #gsc_a_c表示idgsc_a_c的HTML元素。