为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

忽然笑 2023-09-26 16:14:30
请帮我解决这个问题,这是我已经尝试过的代码。我真的很感谢你的帮助。import urllib.requestimport research_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])
查看完整描述

2 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

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


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)

PS 不要用 try/ except 包装你的代码来捕获此类抛出的错误


查看完整回答
反对 回复 2023-09-26
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

urlib 不会为您提供数据使用


import requests

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

text=html.text

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


查看完整回答
反对 回复 2023-09-26
  • 2 回答
  • 0 关注
  • 60 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信