NB :이 예제는 링크를 얻는 매우 기본적인 방법이므로보다 견고하기 위해 조정해야합니다. :)
이 코드가 얼마나 유용한 지 잘 모르겠지만 잘하면이 코드를 복사하여 R에 붙여 넣는 방법에 대한 아이디어를 얻을 수 있습니다. 설치하면 자체 포함 된 예제가됩니다. 패키지 RCurl 및 XML은) :
library(RCurl)
library(XML)
get.links.on.page <- function(u) {
doc <- getURL(u)
html <- htmlTreeParse(doc, useInternalNodes = TRUE)
nodes <- getNodeSet(html, "//html//body//a[@href]")
urls <- sapply(nodes, function(x) x <- xmlAttrs(x)[[1]])
urls <- sort(urls)
return(urls)
}
# a naieve way of doing it. Python has 'urlparse' which is suppose to be rather good at this
get.root.domain <- function(u) {
root <- unlist(strsplit(u, "/"))[3]
return(root)
}
# a naieve method to filter out duplicated, invalid and self-referecing urls.
filter.links <- function(seed, urls) {
urls <- unique(urls)
urls <- urls[which(substr(urls, start = 1, stop = 1) == "h")]
urls <- urls[grep("http", urls, fixed = TRUE)]
seed.root <- get.root.domain(seed)
urls <- urls[-grep(seed.root, urls, fixed = TRUE)]
return(urls)
}
# pass each url to this function
main.fn <- function(seed) {
raw.urls <- get.links.on.page(seed)
filtered.urls <- filter.links(seed, raw.urls)
return(filtered.urls)
}
### example ###
seed <- "http://www.r-bloggers.com/blogs-list/"
urls <- main.fn(seed)
# crawl first 3 links and get urls for each, put in a list
x <- lapply(as.list(urls[1:3]), main.fn)
names(x) <- urls[1:3]
x
복사 및 R에 붙여 넣기 한 다음 X 보면
, 나는 그것이 의미가있을 거라 생각.
어느 쪽이든 행운을 빌어 요! Tony Breyal
덕분에 많은 감사 드류, 나는 그것에 갈 것입니다 (잘하면 시간에 맞춰 작동하게 할거야). –