gpt4 book ai didi

xml - R WebCrawler - XML 内容似乎不是 XML :

转载 作者:数据小太阳 更新时间:2023-10-29 01:42:29 26 4
gpt4 key购买 nike

我从 rNomads 包中取出以下代码并对其进行了一些修改。

最初运行它时我得到:

> WebCrawler(url = "www.bikeforums.net")
[1] "www.bikeforums.net"
[1] "www.bikeforums.net"

Warning message:
XML content does not seem to be XML: 'www.bikeforums.net'

代码如下:

require("XML")

# cleaning workspace
rm(list = ls())

# This function recursively searches for links in the given url and follows every single link.
# It returns a list of the final (dead end) URLs.
# depth - How many links to return. This avoids having to recursively scan hundreds of links. Defaults to NULL, which returns everything.
WebCrawler <- function(url, depth = NULL, verbose = TRUE) {

doc <- XML::htmlParse(url)
links <- XML::xpathSApply(doc, "//a/@href")
XML::free(doc)
if(is.null(links)) {
if(verbose) {
print(url)
}
return(url)
} else {
urls.out <- vector("list", length = length(links))
for(link in links) {
if(!is.null(depth)) {
if(length(unlist(urls.out)) >= depth) {
break
}
}
urls.out[[link]] <- WebCrawler(link, depth = depth, verbose = verbose)
}
return(urls.out)
}
}


# Execution
WebCrawler(url = "www.bikeforums.net")

对我做错了什么有什么建议吗?

更新

大家好,

我开始了这个赏金,因为我认为在R社区中需要这样一个功能,可以爬取网页。赢得赏金的解决方案应该显示一个带有两个参数的函数:

WebCrawler(url = "www.bikeforums.net", xpath = "\\title" )
  • 作为输出,我希望有一个包含两列的数据框:网站链接以及示例 xpath 表达式是否与具有匹配表达式的列相匹配。

非常感谢您的回复

最佳答案

links <- XML::xpathSApply(doc, "//a/@href") 下插入以下代码在你的功能中。

links <- XML::xpathSApply(doc, "//a/@href")
links1 <- links[grepl("http", links)] # As @Floo0 pointed out this is to capture non relative links
links2 <- paste0(url, links[!grepl("http", links)]) # and to capture relative links
links <- c(links1, links2)

并且还记得拥有 url作为http://www......

你也没有更新你的 urls.out列表。正如您所拥有的,它始终是一个空列表,其长度与 links 的长度相同。

关于xml - R WebCrawler - XML 内容似乎不是 XML :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29717773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com