尝试将 XML 数据抓取到数据表时重复超时(致命 SSL/TLS 警报)
Repeated timeouts when trying to scrape XML Data to a datatable (fatal SSL/TLS alert)
我正在尝试将 xml 数据从该网站抓取到数据框中:
https://www.dmo.gov.uk/data/XmlDataReport?reportCode=D1A
我想实现以下格式的dt:
但是我的代码到处都报错:
如:Error in open.connection(x, "rb") : Timeout was reached: [www.dmo.gov.uk] Connection timed out after 10001 milliseconds
代码如下:
library(data.table)
library(rvest)
library(xml2)
url <- read_html("https://www.dmo.gov.uk/data/XmlDataReport?reportCode=D1A")
dt <- rbindlist(lapply(url %>% html_nodes(css = "body > View_GILTS_IN_ISSUE > View_GILTS_IN_ISSUE") %>%
xml_attrs(),
function(x) as.data.table(t((x)))))
dt <- cbind(dt[,9, with = TRUE],
as.data.table(lapply(dt[,-9, with = TRUE], as.character)))
dt
有人对我如何完成这个有什么建议吗?
当我第一次尝试时,我遇到了实际下载文件的第一个障碍。我一直收到错误消息:fatal SSL/TLS alert is received (e.g. handshake failed)
我最终在这里 Error running weathercan package - fatal SSL/TLS alert (e.g. handshake failed)) 找到了一个解决方案,效果非常好。然后我能够执行以下操作:
library(tidyverse)
library(xml2)
x <- read_xml("http://www.dmo.gov.uk/data/XmlDataReport?reportCode=D1A")
zz <- x %>% xml_children() %>% xml_attrs() %>% enframe() %>% unnest_wider(value)
我认为这正是您想要的,除了它是小标题而不是数据 table。
能够结合 mkpt_uk 的答案和此处可用的答案来解决问题:
所以下载文件使用:
download.file(url, destfile = destination)
其次是:
content <- read_xml(file)
我正在尝试将 xml 数据从该网站抓取到数据框中:
https://www.dmo.gov.uk/data/XmlDataReport?reportCode=D1A
我想实现以下格式的dt:
但是我的代码到处都报错:
如:Error in open.connection(x, "rb") : Timeout was reached: [www.dmo.gov.uk] Connection timed out after 10001 milliseconds
代码如下:
library(data.table)
library(rvest)
library(xml2)
url <- read_html("https://www.dmo.gov.uk/data/XmlDataReport?reportCode=D1A")
dt <- rbindlist(lapply(url %>% html_nodes(css = "body > View_GILTS_IN_ISSUE > View_GILTS_IN_ISSUE") %>%
xml_attrs(),
function(x) as.data.table(t((x)))))
dt <- cbind(dt[,9, with = TRUE],
as.data.table(lapply(dt[,-9, with = TRUE], as.character)))
dt
有人对我如何完成这个有什么建议吗?
当我第一次尝试时,我遇到了实际下载文件的第一个障碍。我一直收到错误消息:fatal SSL/TLS alert is received (e.g. handshake failed)
我最终在这里 Error running weathercan package - fatal SSL/TLS alert (e.g. handshake failed)) 找到了一个解决方案,效果非常好。然后我能够执行以下操作:
library(tidyverse)
library(xml2)
x <- read_xml("http://www.dmo.gov.uk/data/XmlDataReport?reportCode=D1A")
zz <- x %>% xml_children() %>% xml_attrs() %>% enframe() %>% unnest_wider(value)
我认为这正是您想要的,除了它是小标题而不是数据 table。
能够结合 mkpt_uk 的答案和此处可用的答案来解决问题:
所以下载文件使用:
download.file(url, destfile = destination)
其次是:
content <- read_xml(file)