想知道如何使用正则表达式推断html元素的值(最好是在python中)。
例如,<a href="http://google.com"> Hello World! </a>
我将使用什么正则表达式从上面的html中提取Hello World!
?
答案 0 :(得分:8)
使用正则表达式解析HTML已在SO上广泛讨论。共识是不应该这样做。
以下是一些值得阅读的相关链接:
我过去用来解析HTML文件的一个技巧是将其转换为XHTML,然后将其视为xml文件并使用xPath。如果这是一个选项,请查看:
答案 1 :(得分:7)
但是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
...
答案 2 :(得分:0)
理想情况下,您不会使用正则表达式 - 它们不适合大多数解析任务,包括HTML。使用解析库 - 我不是专家python用户,但我确信有一个可用。