仅用于a元素中的href的正则表达式

时间:2014-04-11 08:47:20

标签: python regex

我只想替换a-element中href-attribute的数据。这可以用正则表达式完成吗?

示例

<a href="tel:8196887620" value="+18196887620" target="_blank">8196887620</a>

我想你必须为<a ... >创建一个正则表达式,然后为href应用另一个正则表达式,然后再用另一个正则表达式获取"之间的数据。这是正确的还是有更好的方法来做到这一点?也许是python中的库?

3 个答案:

答案 0 :(得分:2)

使用BeautifulSoup获取&#39;锚定&#39;标记href=

        import urllib
        from BeautifulSoup import *
        url = raw_input('Enter - ')
        html = urllib.urlopen(url).read()
        soup = BeautifulSoup(html)
        tags = soup('a')
        for tag in tags:
           print tag.get('href', None)

答案 1 :(得分:2)

谢谢大家。 BeautifulSoup似乎还有很长的路要走。

from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup('<p>Blah blah blah <a href="http://google.com">Google</a></p>')
for a in soup.findAll('a')
  a['href'] = a['href'].replace("google", "mysite")    
result = str(soup)

来源:BeautifulSoup - modifying all links in a piece of HTML?

答案 2 :(得分:1)

你无法有效地使用regexp,因为它是一种(几乎)类型3的语言。 HTML是type2。

Altough作为快速而肮脏的解决方案,它们可能会起作用,但您将快速达到极限。在你的情况下,重点是。

如果你真的想要,这样的解决方案可能会有效:

/<a [^>]*href="([^"]*)"/

更好的解决方案是,如果你搜索xslt处理一点点。即使对于命令行,也有很好的xslt处理工具,他们为你做了。