【问题标题】:Quotes in regex syntax正则表达式语法中的引号
【发布时间】:2020-11-06 20:26:49
【问题描述】:

我是网络抓取和正则表达式语法的新手。 我正在尝试从 YouTube 搜索 html 文件中查找 videoIds 的所有匹配项。我无法使用 BeautifulSoup 的解析来做到这一点,因为它们最近被移到了 JS 脚本中。所以我正在尝试使用正则表达式。

它们在 JS 脚本中显示为:"videoId":"jNQXAC9IVRw"

请注意,ID 始终为 11 个字符。

到目前为止,我正在尝试:

html = urllib.request.urlopen(url).read().decode('utf-8')
pattern = re.compile('<quote>(\w{11})<quote>')
    
matches = re.findall(pattern, html)
for i in range(3):
    print(matches[i])

但它不会找到任何东西。 我希望有一个 ID 列表,例如:

lYtFMmByfJk
d2RlyAz6VQ
utTAphB1y4Y

我做错了什么?

【问题讨论】:

  • 我认为 &lt;quote&gt; 不会出现在 JavaScript 中。尝试使用更独特的模式,例如 pattern = re.compile('videoId":"(.+?)"')

标签: python regex web-scraping


【解决方案1】:

如果您将 更改为 ",它应该可以工作:

import re

html = '"videoId":"jNQXAC9IVRw","videoId":"jNQXACffRwl","videoId":"jNQXAC9ffsw"'
pattern = re.compile('videoId":"(\w{11})"')
    
matches = re.findall(pattern, html)
print(matches)
for i in range(3):
    print(matches[i])

输出是:

>python .\vidIDs.py
['jNQXAC9IVRw', 'jNQXACffRwl', 'jNQXAC9ffsw']
jNQXAC9IVRw
jNQXACffRwl
jNQXAC9ffsw

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 2021-09-02
    • 1970-01-01
    • 2015-03-24
    • 2010-12-01
    • 2015-12-07
    • 1970-01-01
    相关资源
    最近更新 更多