繁体   English   中英

如何使用正则表达式解析HTML标签?

[英]How do I use regular expressions to parse HTML tags?

想知道如何使用正则表达式(最好在python中)推断html元素的值。

例如, <a href="http://google.com"> Hello World! </a> <a href="http://google.com"> Hello World! </a>

我将使用什么正则表达式来提取Hello World! 从上面的HTML?

在SO上已广泛讨论了使用正则表达式解析HTML。 共识是不应该这样做。

以下是一些相关链接,值得阅读:

我过去用来解析HTML文件的一个技巧是将其转换为XHTML,然后将其视为xml文件并使用xPath。 如果这是一个选项,请查看:

正则表达式+ HTML ...

但是BeautifulSoup是一个方便的库。

>>> from BeautifulSoup import BeautifulSoup
>>> html = '<a href="http://google.com"> Hello World! </a>'
>>> soup = BeautifulSoup(html)
>>> soup.a.string
u' Hello World! '

例如,这将在此页面上打印出链接:

import urllib2
from BeautifulSoup import BeautifulSoup

q = urllib2.urlopen('https://stackoverflow.com/questions/3884419/')
soup = BeautifulSoup(q.read())

for link in soup.findAll('a'):
    if link.has_key('href'):
        print str(link.string) + " -> " + link['href']
    elif link.has_key('id'):
        print "ID: " + link['id']
    else:
        print "???"

输出:

Stack Exchange -> http://stackexchange.com
log in -> /users/login?returnurl=%2fquestions%2f3884419%2f
careers -> http://careers.stackoverflow.com
meta -> http://meta.stackoverflow.com
...
ID: flag-post-3884419
None -> /posts/3884419/revisions
...

理想情况下,您将不使用正则表达式-它们不适合大多数解析任务,包括HTML。 使用解析库-我不是python专家,但是我敢肯定会有一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM