Tôi lấy mã sau đây từ gói rNomads và sửa đổi nó một chút.R WebCrawler - Nội dung XML có vẻ không phải là XML:
Khi ban đầu chạy nó tôi nhận được:
> 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'
Đây là mã:
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")
Bất kỳ đề nghị những gì tôi đang làm sai?
CẬP NHẬT
Hello guys,
tôi bắt đầu săn tiền thưởng này, bởi vì tôi nghĩ rằng trong cộng đồng R có cần thiết phải là một chức năng như vậy, có thể bò trang web. Các giải pháp, trong đó sẽ giành chiến thắng tiền thưởng sẽ hiển thị một chức năng mà phải mất hai thông số:
WebCrawler(url = "www.bikeforums.net", xpath = "\\title")
- Như ra tôi muốn có một khung dữ liệu với hai cột: liên kết trang web và nếu biểu thức Ví dụ xpath phù hợp một cột có biểu thức phù hợp.
Tôi thực sự đánh giá cao trả lời của bạn
Nếu bạn chạy 'doc <- XML :: htmlParse (" http://www.bikeforums.net "); các liên kết <- XML :: xpathSApply (doc, "// a/@ href") 'thủ công nó hoạt động nhưng trong hàm (sử dụng chế độ gỡ lỗi) doc trở lại trống ... đây là lạ – Rentrop
Hãy thử với' url = "http : //www.bikeforums.net "' và cho tôi biết –
@dimitris_ps Khi tôi chạy '> WebCrawler (url =" http://www.bikeforums.net ")' Tôi get'Error: không tải được thực thể bên ngoài "/"' – mrquad