【问题标题】:Error: Failed to load external entity "http://......."错误:无法加载外部实体“http://.......”
【发布时间】:2020-10-30 16:13:21
【问题描述】:

问题

我正在尝试复制在此 video 中完成的网络抓取。

最终,我想在 Power BI 的 R 脚本编辑器中运行代码,但我收到的错误是我没有安装包 data.table。然后我尝试在 RStudio 中运行代码,并确保我安装了必要的包和库。当我使用http 运行代码时,我收到错误Failed to load external entity "http://......."

我不确定我做错了什么。有任何故障排除建议吗?

代码

library(data.table)
library(XML)

pages <- c(1:25)

urls <- rbindlist(lapply(pages, function(x) {
  url <- paste("http://www.r-users.com/jobs/page/",x,"/", sep="")
  data.frame(url)
}), fill=TRUE)

jobLocations <- rbindlist(apply(urls , 1, function(url) {
  doc1 <- htmlParse(url)
  locations <- getNodeSet(doc1,'//*[@id="mainContent"]/div[2]/ol/li/dl/dd[3]/span/text()')
  data.frame(sapply(locations , function(x) { xmlValue(x)}))
}), fill=TRUE)

【问题讨论】:

    标签: r web-scraping powerbi


    【解决方案1】:

    同样的错误,但它似乎适用于其他库,如 xml2rvest,因此请尝试以下 sn-p:

    library(data.table)
    library(rvest)
    library(xml2)
    
    pages <- c(1:2)
    
    urls <- rbindlist(lapply(pages, function(x) {
      url <- paste("http://www.r-users.com/jobs/page/",x,"/", sep="")
      data.frame(url)
    }), fill=TRUE)
    
    jobLocations <- data.table::rbindlist(apply(urls, 1, function(url) {    
        nodes <- html_nodes(read_html(url), xpath = '//*[@id="mainContent"]/div[2]/ol/li/dl/dd[3]/span/text()')
        text <- html_text(nodes)
        data.frame(text)
    }), fill=TRUE)
    

    【讨论】:

    • 当我运行上面的代码时,我收到错误消息: read_xml(x, encoding = encoding, ..., as_html = TRUE, options = options) 中的错误:缺少参数“x”,没有默认值。函数中哪里缺少“x”?
    • 我已经更新了答案以避免管道操作员,所以不需要tidyverse 包。我只需要install.packages("data.table")install.packages("rvest")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多