第 7 行,IndexError:列表索引超出范围

请帮我解决这个问题,这是我已经尝试过的代码。我真的很感谢你的帮助。


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])


忽然笑
浏览 108回答 2
2回答

海绵宝宝撒

首先检查您尝试解析的页面。你写了:r"watch?v=(\S{11})"只记得那个吗?这里的 char 将被解析为 REGEX 运算符而不是您想要的字符串,因此首先您需要将其编写为:/watch[?]v=(\S{11})所以你的正则表达式将被正确解析第二:打印你的列表以查看你得到什么并使用FOR循环通过列表迭代而不是直接访问索引[0]的好习惯。在您的情况下,您收到此错误只是因为您的 id 列表为空。下一个代码对我有用import urllib.requestimport research_keyword="ill%20wiat"url="https://www.youtube.com/results?search_query="+search_keywordwith 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)PS 不要用 try/ except 包装你的代码来捕获此类抛出的错误

拉莫斯之舞

urlib 不会为您提供数据使用import requestshtml=requests.get('https://www.youtube.com/results?search_query='+search_keyword)text=html.texttext 包含所有 html 数据,因此从 text 搜索
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python