亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

第 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 關注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號