Rvest阅读分开的文章数据

问题描述 投票:0回答:1

我正在寻找从inquirer.net刮文章数据。

这是Scrape Data through RVest的后续问题

这是基于答案的代码:

library(rvest)
#> Loading required package: xml2
library(tibble)

year  <- 2020
month <- 06
day   <- 13
url   <- paste0('http://www.inquirer.net/article-index?d=', year, '-', month, '-', day)

div       <- read_html(url) %>% html_node(xpath = '//*[@id ="index-wrap"]')
links     <- html_nodes(div, xpath = '//a[@rel = "bookmark"]') 
post_date <- html_nodes(div, xpath = '//span[@class = "index-postdate"]') %>% 
             html_text()

test <- tibble(date = post_date,
               text = html_text(links),
               link = html_attr(links, "href"))

test
#> # A tibble: 261 x 3
#>    date     text                              link                              
#>    <chr>    <chr>                             <chr>                             
#>  1 1 day a~ ‘We can never let our guard down~ https://newsinfo.inquirer.net/129~
#>  2 1 day a~ PNP spox says mañanita remark di~ https://newsinfo.inquirer.net/129~
#>  3 1 day a~ After stranded mom’s death, Pasa~ https://newsinfo.inquirer.net/129~
#>  4 1 day a~ Putting up lining for bike lanes~ https://newsinfo.inquirer.net/129~
#>  5 1 day a~ PH Army provides accommodation f~ https://newsinfo.inquirer.net/129~
#>  6 1 day a~ DA: Local poultry production suf~ https://newsinfo.inquirer.net/129~
#>  7 1 day a~ IATF assessing proposed design t~ https://newsinfo.inquirer.net/129~
#>  8 1 day a~ PCSO lost ‘most likely’ P13B dur~ https://newsinfo.inquirer.net/129~
#>  9 2 days ~ DOH: No IATF recommendations yet~ https://newsinfo.inquirer.net/129~
#> 10 2 days ~ PH coronavirus cases exceed 25,0~ https://newsinfo.inquirer.net/129~
#> # ... with 251 more rows

我现在想在此输出中添加新列,其中每行都有完整的文章。在进行for循环之前,我正在研究第一篇文章的html代码:https://newsinfo.inquirer.net/1291178/pnp-spox-says-he-did-not-intend-to-put-sinas-in-bad-light

深入研究html代码,我注意到它不是那么干净。根据我到目前为止的发现,主要文章数据属于#article_content , p。因此,我现在的输出是分开的多行,并且出现了许多非文章数据。这是我目前拥有的:

article_data<-data.frame(test)
article_url<- read_html(article_data[2, 3])
article<-article_url %>%
   html_nodes("#article_content , p") %>%
   html_text()
View(article)

enter image description here

我可以接受多行,因为我可以合并最终结果。但是,由于还有其他非条款项,因此它将弄乱我正在尝试执行的操作(情感分析)。

有人可以协助您清除这些数据,以使整篇文章都位于每篇文章链接的旁边吗?

我可以只合并结果,但不包括第一行和最后两行,而是寻找一种更简洁的方法,因为我想对所有文章数据而不只是对这个数据进行此处理。

r rvest
1个回答
0
投票

在简要浏览文章页面的结构后,建议使用css选择器:".article_align div p"

library(rvest)
library(dplyr)

url <- "https://newsinfo.inquirer.net/1291178/pnp-spox-says-he-did-not-intend-to-put-sinas-in-bad-light"

read_html(url) %>% 
  html_nodes(".article_align div p") %>% 
  html_text()
© www.soinside.com 2019 - 2024. All rights reserved.