re.search网页源代码,带有回车符中间字符串,导致Python出错

时间:2015-10-30 13:56:19

标签: python youtube mechanize python-2.6

使用Python 2.6.6

我试图使用机械化浏览器获取youtube链接的标题,虽然它确实可用于链接到实际视频,链接到频道的页面或其播放列表等,但却导致它崩溃。

相关代码段:

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

错误:

  

yttitle = yttitle.group(1)   AttributeError:&#39; NoneType&#39;对象没有属性&#39; group&#39;

我可以看到的唯一区别是,直接视频链接在源代码中的a single line上列出了标题标记,而其他每个youtube页面似乎都将a carriage return/newline放在标题标记的中间。

任何人都知道如何解决回车问题,假设这是问题吗?

干杯。

1 个答案:

答案 0 :(得分:2)

您可以使用re.DOTALL标记,这会使.与包含换行符在内的所有内容相匹配。

Documentation

所以你的第二行代码应该是这样的:

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

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