如何修复此RCurl错误?

如何修复此RCurl错误?,r,web-scraping,rcurl,R,Web Scraping,Rcurl,我想问一个关于我目前面临的问题的问题。在尝试刮取HTML页面(使用RCurl)时,我遇到了以下错误:“curlMultiPerform(multiHandle)中的错误:字符串中嵌入nul”。我读了很多关于这类错误以及如何处理它的建议(包括RCurl软件包的创建者邓肯·坦普尔·朗的建议)。但即使在应用了他的建议(如下所示)之后,我也得到了同样的错误: htmlPage <- rawToChar(getURLContent(url, followlocation = TRUE, binary

我想问一个关于我目前面临的问题的问题。在尝试刮取HTML页面(使用RCurl)时,我遇到了以下错误:“curlMultiPerform(multiHandle)中的错误:字符串中嵌入nul”。我读了很多关于这类错误以及如何处理它的建议(包括RCurl软件包的创建者邓肯·坦普尔·朗的建议)。但即使在应用了他的建议(如下所示)之后,我也得到了同样的错误:

htmlPage <- rawToChar(getURLContent(url, followlocation = TRUE, binary = TRUE))
doc <- htmlParse(htmlPage, asText=TRUE)
通过使用
links[i]
,我试图在正在进行的“lappy()迭代”中引用links列表的当前元素


第二次编辑:

目前,我正在努力处理以下代码。我发现还有几个案例,人们建议完全相同的方法,这让我好奇为什么它在我的情况下不起作用

getData <- function(x) try(read.table(bzfile(x), sep = ",", row.names = NULL))
data <- lapply(seq_along(links), function(i) getData(links[[i]]))
getDataSasha

试试这个

library(XML)
url <- "http://flossdata.syr.edu/data/fc/2013/2013-Dec/"
doc <- htmlParse(url)
ndx <- getNodeSet(doc,"//table")
库(XML)

url我能够自己找出上述问题的原因。这花了我很多时间和精力,但它是值得的——现在我更好地理解了R
列表和
lappy()

基本上,我做了三大改变:

1) 添加了
textConnection()
readLines()
以处理类似CSV的文件:

conn <- gzcon(bzfile(file, open = "r"))
tConn <- textConnection(readLines(conn))
3) 使用正确的订阅符号来引用
lappy()
的整个列表:


data@mnel:'url'是一个网页的HTTP url,用于获取开源项目存储库信息,例如:.
htmlpasse
来自哪个包?另外,您是否可以在打印时包含脚本,以便准确地知道错误发生的位置(在第一行或第二行)?谢谢。另外,如果是在第二部分,您可以尝试使用
gsub
来实现大部分功能,例如
gsub(“]+>”,“”,htmlPage,perl=TRUE)
。我不确定这是否正是你想要的,但也许它朝着正确的方向发展?(请注意,这不是一个超级通用的解决方案,例如,我可以想出打破它的例子,但它可能适用于您正在考虑的特定页面。)@DavidDiez:谢谢您的评论。事实上,这使我能够更准确地定位错误的位置-问题似乎与
htmlpasse
无关(顺便说一句,它来自
XML
package)。我仍然在几个地方打印调试信息,以便更准确地找出问题所在和原因。我一知道更多情况就会报告。谢谢你的帮助!该错误表示您正在尝试读取包含nul字节的二进制文件。R不喜欢知道如何处理它们(或者不能对它们做任何事情,这取决于你想怎么想),所以它失败了。您正在尝试阅读链接到的页面吗?还是该页面上链接的某个文件?如果是其中一个文件,请注意它们是bzip文件,因此如果不先解压缩它们,就无法将它们转换为字符(甚至有些不是文本文件)。!请检查您的电子邮件。
library(XML)
url <- "http://flossdata.syr.edu/data/fc/2013/2013-Dec/"
doc <- htmlParse(url)
ndx <- getNodeSet(doc,"//table")
conn <- gzcon(bzfile(file, open = "r"))
tConn <- textConnection(readLines(conn))
url <- links[[1]][i]
data <- lapply(seq_along(links[[1]]), getData)