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 包裝你的代碼來捕獲此類拋出的錯誤

TA貢獻1820條經驗 獲得超10個贊
urlib 不會為您提供數據使用
import requests
html=requests.get('https://www.youtube.com/results?search_query='+search_keyword)
text=html.text
text 包含所有 html 數據,因此從 text 搜索
添加回答
舉報