我有一些看起来像这样的HTML:
<ul><li><a href="http://www.website.com/index.aspx" target="_blank">Website</a></li>
<li><a href="http://website.com/index.html" target="_blank">Website</a></li>
<li><a href="http://www.website-with-dashes.org" target="_blank">Website With Dashes</a></li>
<li><a href="http://website2.org/index.htm" target="_blank">Website 2</a></li>
<li><a href="http://www.another-site.com/">Another Site</a></li>
使用
m<-regexpr("http://\\S*/?", links, perl=T)
links<-regmatches(links, m)
获取链接,除了其中包含破折号的链接被截断为:
http://www.website.com/index.aspx
http://website.com/index.html
http://www.website
http://website2.org/index.htm
http://www.another-site.com/
我认为/ S匹配任何非空格。发生了什么事?
答案 0 :(得分:4)
使用XML::getHTMLlinks
例如
library(XML)
# assuming your html document is'foo.html')
getHTMLLinks(doc = 'foo.html')
# [1] "http://www.website.com/index.aspx" "http://website.com/index.html" "http://www.website-with-dashes.org"
# [4] "http://website2.org/index.htm" "http://www.another-site.com/"
使用正则表达式解析HTML
不一定是直截了当的。 https://stackoverflow.com/a/1732454/1385941是有趣的读物。