在R中的URL列表上运行html解析函数
因此,我有一个新闻文章URL的列表/df,我从一个地方政府机构的“新闻档案”中刮取了这些URL,总共大约5000个。我已经编写了以下函数,使用rvest获取文章的标题、正文和发布日期,现在我将包括以下内容:在R中的URL列表上运行html解析函数,html,r,xml,web-scraping,supervised-learning,Html,R,Xml,Web Scraping,Supervised Learning,因此,我有一个新闻文章URL的列表/df,我从一个地方政府机构的“新闻档案”中刮取了这些URL,总共大约5000个。我已经编写了以下函数,使用rvest获取文章的标题、正文和发布日期,现在我将包括以下内容: get_title <- function(url){ html <- read_html(url) html %>% rvest::html_nodes('body') %>% xml2::xml_find_first("//div[c
get_title <- function(url){
html <- read_html(url)
html %>%
rvest::html_nodes('body') %>%
xml2::xml_find_first("//div[contains(@class, 'page-header col-xs-12')]") %>%
rvest::html_text()
}
get_text <- function(html){
html %>%
rvest::html_nodes('body') %>%
xml2::xml_find_all("//div[contains(@class, 'col-xs-12 text-content')]") %>%
rvest::html_text()
}
get_date <- function(text){
substr(text, 14, 21)
}
获取标题%
xml2::xml_find_first(“//div[contains(@class,'page header col-xs-12')]”)%>%
rvest::html_text()
}
获取文本%
rvest::html_节点('body')%>%
xml2::xml_find_all(“//div[contains(@class,'col-xs-12 text content')]”)%>%
rvest::html_text()
}
get_date您可以将三个函数的结果导出为一个列表,并使用dplyr::bind_rows
将它们组合成一个TIBLE:
库(rvest)
图书馆(dplyr)
#示例url列表:
url1标题文本日期
#>
#>1“\n\n…”\n 19.03.20\nRundet s…19.03…
#>2“\n\n…”\n 2020年3月19日\n在…19.03…
非常感谢您!这真的很有帮助。我发现我愚蠢地没有正确地将URL的df转换为列表,所以我开始尝试在列表的子列表上运行代码。。。
df_of_urls <- df_of_urls %>% mutate(title = get_title(df_of_urls$x))
get_title(list_of_urls)