re.search 带有回车 return 中间字符串的网页源导致 Python 中的错误

re.search webpage source with a carriage return mid string causing errors in Python

使用 Python 2.6.6

我正在尝试使用 mechanize 浏览器获取 youtube links 的标题,虽然它确实适用于 links 到实际视频,但 linking 到频道的页面或他们的播放列表等导致崩溃。

相关代码段:

ytpage = br.open(ytlink).read()
yttitle = re.search('<title>(.*)</title>', ytpage)
yttitle = yttitle.group(1)

错误:

yttitle = yttitle.group(1) AttributeError: 'NoneType' object has no attribute 'group'

我能看到的唯一区别是直接视频 link 将标题标签放在标题标签中间的 a single line in the source whereas every other youtube page seems to put a carriage return/newline 上。

任何人都知道我如何绕过那辆马车 return,假设这是问题所在?

干杯。

您可以使用 re.DOTALL 标志,这将使 . 匹配所有内容,包括换行符。

Documentation

因此您的第二行代码应如下所示:

yttitle = re.search('<title>(.*)</title>', ytpage, re.DOTALL)

顺便从网页中提取数据可能更容易使用Beautiful Soup