2015-05-19 58 views
1

如何使用R將href更改爲有意義的URL?通過有意義的我瞭解一個地址,如果粘貼到瀏覽器將正確打開。如何使用R將href更改爲URL?

例如:

<a href="../../systemfit/html/systemfit.html">systemfit</a> 

讀取距離: http://artax.karlin.mff.cuni.cz/r-help/library/systemfit/html/systemfit.control.html

到: http://artax.karlin.mff.cuni.cz/r-help/library/systemfit/html/systemfit.html

我做的是:

collectLinks <- function(x){ 
library(stringi) 
fileUrl <- (x) 
html <- paste(readLines(fileUrl, warn=FALSE), collapse="\n") 
matched <- stri_match_all_regex(html, "<a href=\"(.*?)\"") 
matched[[1]][, 2] 
} 

links <- collectLinks("http://artax.karlin.mff.cuni.cz/r-help/library/systemfit/html/systemfit.control.html") 

功能collectLinks需要一個char acter字符串,其中包含一個URL作爲輸入。它返回一個在x上找到的href內容的字符向量。

接下來我想要做的是遍歷鏈接中的每個元素並從中提取href內容。但是:

[1] "../../systemfit/html/systemfit.html"  "../../systemfit/html/solve.html"  
[3] "../../systemfit/html/det.html"   "../../systemfit/html/systemfit.html" 
[5] "mailto:[email protected]" "../../systemfit/html/systemfit.html" 
[7] "00Index.html" 

不是有意義的URL。

readLines(links[1]) 
Error in file(con, "r") : cannot open the connection 
In addition: Warning message: 
In file(con, "r") : 
cannot open file '../../systemfit/html/systemfit.html': No such file or directory 

我不知道是否有一種通用的方式,允許將href內容轉換爲可以進一步利用的有意義的URL?

+0

我不太明白你的意思嗎?你可能只需要一些正則表達式?剛刪除systemfit,」「)'?? – grrgrrbla

+0

我正在用readLines讀取html,並用正則表達式提取href內容。接下來我想要做的是打開href中的內容,從正則表達式,但這並不是一個有意義的URL讀取行 –

回答

1
library(XML) 
k1<-getHTMLLink("http://artax.karlin.mff.cuni.cz/r-help/library/systemfit/html/systemfit.control.html") 
#k1[6] is what you are looking for: 
>k1[6] 
[1] "../../systemfit/html/systemfit.html" 
k2<-htmlParse(sub("../..", "http://artax.karlin.mff.cuni.cz/r-help/library",k1[6])) 
+0

這將工作,但只爲這個例子,我想知道是否有任何通用的解決方案 –

+0

有沒有通用的解決方案,請參閱'http://www.w3.org/ TR/WD-html40-970917/htmlweb.html'。 – Metrics