如何使用R从HTML中提取包含破折号的URL?

时间:2013-08-22 05:59:06

标签: html regex r

我有一些看起来像这样的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匹配任何非空格。发生了什么事?

1 个答案:

答案 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是有趣的读物。