用R语言对文章中的所有文本进行Web抓取

wwtsj6pe  于 2023-04-18  发布在  R语言
关注(0)|答案(2)|浏览(110)

我正在创建一个webscraper,我正在收集一篇文章的全文。因此,现在我还没有能够抓住文章全文所需的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")
uinbv5nw

uinbv5nw1#

首先,您需要下载PDF文件,然后再尝试从中提取文本。
阅读html源文件,似乎pdf文件链接存储在“ meta”标签中。从那里你可以下载文档或尝试使用文档上的“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和此用户的其他问题,因为您似乎正在处理类似的问题。
这将是一个更好的定义目标,而不是给予我一切的另一个问题。

93ze6v8z

93ze6v8z2#

我已经能够用下面的代码获得文章的文本:

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()

相关问题