尝试使用正则表达式选择<title> </title>
之间的值。
但有时这两个标签位于不同的行上。
答案 0 :(得分:1)
正如其他人所说,使用完整的标记语言解析器(例如stdlib的htmlparser甚至BeautifulSoup)比正则表达式更强大,更脆弱。虽然,由于正则表达式似乎是一个要求,也许这样的事情会起作用:
import urllib2
import re
URL = 'http://amazon.com'
page = urllib2.urlopen(URL)
stream = page.readlines()
flag = False
for line in stream:
if re.search("<title>", line):
print line
if not re.search("</title>", line):
flag = True
elif re.search("</title>", line):
print line
flag = False
elif flag == True:
print line
当它找到<title>
标记时会打印该行,检查以确保结束标记不在同一行上,然后继续打印行直到找到结束{{1} }。
答案 1 :(得分:1)
如果您不能使用解析器,只需通过暴力破解即可。将HTML文档读入字符串doc
,然后:
try:
title = doc.split('<title>')[1].split('</title>')[0]
except IndexError:
## no title tag, handle error as you see fit
请注意,如果有一个没有匹配结束标记的开始标题标记,则搜索会成功。在格式良好的HTML文档中不是一种可能的情况,但仅供参考。