用 rvest 提取 url - returns {{article.Link}} 而不是 link?
Extract url's with rvest - returns {{article.Link}} instead of the link?
我正在尝试从网站“https://politi.dk/doegnrapporter”中抓取 url。我在 R 中使用 rvest 和 dplyr,但我的代码输出 {{article.Link}}
而不是实际的 link。我认为这与加载 link 网站的 html 代码中的一些 Java 脚本有关,但是在抓取 url 时如何抵消这个问题] 在 R 中。
到目前为止我的代码是:
library(rvest)
page <- read_html("https://politi.dk/doegnrapporter")
t <- page %>% html_nodes("a.newsResultLink") %>% html_attr('href')
t
[1] "{{article.Link}}"
所以我想要一个 hyperlink 的 url 的列表,而不是 {{article.Link}}
,例如“https://politi.dk/oestjyllands-politi/doegnrapporter/doegnrapport07092021/2021/09/07”、“https://politi.dk/nordsjaellands-politi/doegnrapporter/nordsjaellands-politi-uddrag-af-doegnrapport-0607-september-2021/2021/09/07”等
数据是从具有 class newsList
的元素的 ng-init
属性中提取的。这与 Angular 中的 ngInit
指令相关联,当 JavaScript 在页面上运行时,数据会动态加载到您在网页上看到的位置。
您可以从该属性中提取内容,将适当的 JavaScript 对象正则表达式处理为 json,然后从中提取链接:
library(rvest)
library(stringr)
library(jsonlite)
page <- read_html('https://politi.dk/doegnrapporter')
m <- page |> html_element('.newsList') |> html_attr('ng-init') |> str_match(., 'init\((.*)\)')
data <- jsonlite::parse_json(m[2])
articles <- lapply(data$AllNews$NewsList, function(x) x$Link) |> unlist(recursive = F)
我正在尝试从网站“https://politi.dk/doegnrapporter”中抓取 url。我在 R 中使用 rvest 和 dplyr,但我的代码输出 {{article.Link}}
而不是实际的 link。我认为这与加载 link 网站的 html 代码中的一些 Java 脚本有关,但是在抓取 url 时如何抵消这个问题] 在 R 中。
到目前为止我的代码是:
library(rvest)
page <- read_html("https://politi.dk/doegnrapporter")
t <- page %>% html_nodes("a.newsResultLink") %>% html_attr('href')
t
[1] "{{article.Link}}"
所以我想要一个 hyperlink 的 url 的列表,而不是 {{article.Link}}
,例如“https://politi.dk/oestjyllands-politi/doegnrapporter/doegnrapport07092021/2021/09/07”、“https://politi.dk/nordsjaellands-politi/doegnrapporter/nordsjaellands-politi-uddrag-af-doegnrapport-0607-september-2021/2021/09/07”等
数据是从具有 class newsList
的元素的 ng-init
属性中提取的。这与 Angular 中的 ngInit
指令相关联,当 JavaScript 在页面上运行时,数据会动态加载到您在网页上看到的位置。
您可以从该属性中提取内容,将适当的 JavaScript 对象正则表达式处理为 json,然后从中提取链接:
library(rvest)
library(stringr)
library(jsonlite)
page <- read_html('https://politi.dk/doegnrapporter')
m <- page |> html_element('.newsList') |> html_attr('ng-init') |> str_match(., 'init\((.*)\)')
data <- jsonlite::parse_json(m[2])
articles <- lapply(data$AllNews$NewsList, function(x) x$Link) |> unlist(recursive = F)