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
标志,这将使 .
匹配所有内容,包括换行符。
因此您的第二行代码应如下所示:
yttitle = re.search('<title>(.*)</title>', ytpage, re.DOTALL)
顺便从网页中提取数据可能更容易使用Beautiful Soup。
使用 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
标志,这将使 .
匹配所有内容,包括换行符。
因此您的第二行代码应如下所示:
yttitle = re.search('<title>(.*)</title>', ytpage, re.DOTALL)
顺便从网页中提取数据可能更容易使用Beautiful Soup。