在R

时间:2018-03-17 12:41:00

标签: r web-scraping rvest

我的目标是通过他们的头衔获取Kaggle所有挑战的链接。我正在使用图书馆rvest,但我似乎没有走远。当我是几个div时,节点是空的。

我首先尝试为第一个挑战做这件事,然后应该能够将其转移到每个条目。 第一个条目的xpath是:

/html/body/div[1]/div[2]/div/div/div[2]/div/div/div[2]/div[2]/div/div/div[2]/div/div/div[1]/a

我的想法是在我使用正确的标签时通过html_attr( , "href")获取链接。

我的想法是:

library(rvest)

url = "https://www.kaggle.com/competitions"
kaggle_html = read_html(url)
kaggle_text = html_text(kaggle_html)
kaggle_node <- html_nodes(kaggle_html, xpath = "/html/body/div[1]/div[2]/div/div/div[2]/div/div/div[2]/div[2]/div/div/div[2]/div/div/div[1]/a")
html_attr(kaggle_node, "href")

我不能超过某个div。以下代码段显示了我可以访问的最后一个节点

node <- html_nodes(kaggle_html, xpath="/html/body/div[1]/div[2]/div")
html_attrs(node)

一旦我使用html_nodes(kaggle_html,xpath="/html/body/div[1]/div[2]/div/div")更进一步,该节点将为空。

我认为问题在于,kaggle使用了一个智能列表,可以进一步向下扩展。

(我知道我可以使用%>%。我正在保存每一步,以便我能够更轻松地访问和查看它们,以便能够了解它是如何正常工作的。)

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。我认为我无法从R访问该站点的完整html代码,因为该表是由一个脚本加载的,该脚本在用户滚动的情况下扩展了表(因此是HTML)。

我通过手动扩展表格,下载整个HTML网页并加载本地文件来解决它。