【问题标题】:Webscraping all text in an article in R在 R 中抓取文章中的所有文本
【发布时间】:2021-03-31 00:21:08
【问题描述】:

我正在创建一个网络抓取工具,用于收集文章的全文。因此,现在我无法获取文章全文所需的 html。文本应稍后输出到 csv 中,文本全部在一行中

我的输出当前为空白

我的程序如下:

library(rvest)
library(RCurl)
library(XML)
library(stringr)
#for Fulltext to read pdf
####install.packages("pdftools")
library(pdftools)

fullText <- function(parsedDocument){
  fullText <- parsedDocument %>%
    html_nodes("a.article-body") %>%
    html_text() %>%
    return(fullText)
}

#main function with input as parameter year
testFullText <- function(DOIurl){
  parsedDocument <- read_html(DOIurl)
  DNAresearch <- data.frame()
  allData <- data.frame("Full Text" = fullText(parsedDocument), stringsAsFactors = FALSE)
  DNAresearch <-  rbind(DNAresearch, allData)
  write.csv(DNAresearch, "DNAresearch.csv", row.names = FALSE)
}
testFullText("https://doi.org/10.1093/dnares/dsm026")

【问题讨论】:

    标签: html r web web-scraping


    【解决方案1】:

    首先,您需要先下载 pdf 文件,然后再尝试从中提取文本。

    阅读 html 源代码时,pdf 文件链接似乎存储在“元”标签中。您可以从那里下载文档或尝试使用文档上的“pdftools”库。

    library(dplyr)
    library(rvest)
    
    #read webpage
    DOIurl<- "https://doi.org/10.1093/dnares/dsm026"
    page <-read_html(DOIurl)
    
    #find the meta tag with pdf link and extract the content
    pdffile <- page %>% html_nodes(xpath='.//meta[@name="citation_pdf_url"]') %>% html_attr("content")
    
    #download the document
    download.file(pdffile, "Internetpaper.pdf")
    

    如果您只查找论文的特定部分,那么直接从网页中提取该信息而不是下载文档可能是有意义的。
    另请参阅此问题Incorrect first row in webscrape using R 和该用户提出的其他问题,因为您似乎正在解决类似的问题。
    这对于另一个更好地定义目标而不是给我一切的问题会很好。

    【讨论】:

    • 我正在尝试将全文写入 csv 文件,而不是制作新的 pdf 文件
    • 我想补充一下,我发布了一个类似的问题,这是我尝试使用 pdfTools 但从未在问题上得到帮助stackoverflow.com/questions/66879402/…
    • 我不熟悉 pdftools,所以对此无能为力。掌握文件是重要的第一步。我建议删除上一个问题并询问一个关于从文件中提取的新问题
    【解决方案2】:

    我已经能够用下面的代码得到文章的正文了:

    library(stringr)
    library(rvest)
    library(RDCOMClient)
    
    url <- "https://doi.org/10.1093/dnares/dsm026"
    IEApp <- COMCreate("InternetExplorer.Application")
    IEApp[['Visible']] <- TRUE
    IEApp$Navigate(url)
    Sys.sleep(5)
    doc <- IEApp$Document()
    web_Obj <- doc$getElementByID("ContentTab")
    article_Text <- web_Obj$innerText()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 2020-02-16
      • 1970-01-01
      • 1970-01-01
      • 2021-06-14
      相关资源
      最近更新 更多