您正在使用正则表达式,并且将与此类表达式匹配的HTML变得太复杂,太快。
取而代之的是使用HTML解析器,Python有多种选择。我建议您使用BeautifulSoup,这是一个受欢迎的3rd party库。
BeautifulSoup示例:
from bs4 import BeautifulSoup
response = urllib2.urlopen(url)
soup = BeautifulSoup(response.read(), from_encoding=response.info().getparam('charset'))
title = soup.find('title').text
由于title
标签本身不包含其他标签,因此可以在此处使用正则表达式,但是一旦尝试解析嵌套标签, 就会 遇到非常复杂的问题。
您可以通过匹配title
标记中的其他字符来解决您的特定问题,可以选择:
r'<title[^>]*>([^<]+)</title>'