[英]How do I parse only foreign characters from the text in an HTML file with regular expressions
[英]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。 如果这是一个选项,请查看:
但是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.