【问题标题】:re.search webpage source with a carriage return mid string causing errors in Pythonre.search 带有回车中间字符串的网页源导致 Python 中的错误
【发布时间】:2015-10-30 13:56:19
【问题描述】:

使用 Python 2.6.6

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

相关代码段:

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

错误:

yttitle = yttitle.group(1) AttributeError:“NoneType”对象没有属性“组”

我能看到的唯一区别是直接视频链接在源中的a single line 上布置了标题标签,而其他所有 youtube 页面似乎都将a carriage return/newline 放在标题标签的中间。

如果这是问题所在,任何人都知道我如何绕过回车?

干杯。

【问题讨论】:

  • 那么我想更好的方法是不使用正则表达式?尝试改用 html 解析器

标签: python youtube mechanize python-2.6


【解决方案1】:

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

Documentation

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

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

顺便说一句,从网页中提取数据,使用Beautiful Soup可能更容易。

【讨论】:

    猜你喜欢
    • 2020-08-10
    • 2023-03-03
    • 1970-01-01
    • 2023-03-10
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    相关资源
    最近更新 更多