Line 7, IndexError: list index out of range

Line 7, IndexError: list index out of range

请帮我解决这个问题,这是我已经尝试过的代码。 非常感谢您的帮助。

import urllib.request
import re

search_keyword="ill%20wiat"
html = urllib.request.urlopen("https://www.youtube.com/results?search_query=" + search_keyword)
video_ids = re.findall(r"watch?v=(\S{11})", html.read().decode())
print("https://www.youtube.com/watch?v=" + video_ids[0])

urlib 不会给你数据 使用

import requests
html=requests.get('https://www.youtube.com/results?search_query='+search_keyword)
text=html.text

文本包含所有 html 数据,因此从文本搜索

首先检查您尝试解析的页面。你写道:

r"watch?v=(\S{11})"

还记得吗?这里的 char 将被解析为 REGEX 运算符而不是你想要的字符串, 所以首先你需要这样写:

/watch[?]v=(\S{11})

因此您的正则表达式将被正确解析
第二:打印列表以查看获得的内容并使用 FOR 循环而不是直接访问索引 [0].
通过列表进行迭代的好习惯 在你的情况下,你得到这个错误只是因为你的 id 列表是空的。

下一个代码对我有用

import urllib.request
import re

search_keyword="ill%20wiat"
url="https://www.youtube.com/results?search_query="+search_keyword
with urllib.request.urlopen(url) as response:
   video_ids = re.findall("/watch[?]v=(\S{11})", response.read().decode())
   for video in video_ids:
      print("https://www.youtube.com/watch?v=" + video)

P.S 不要用 try/except 包装您的代码以捕获此类抛出的错误