0

我有一些看起来像这样的 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 匹配任何非空白。这是怎么回事?

4

1 回答 1

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读起来很有趣。

于 2013-08-22T06:08:29.337 回答