2 回答
![?](http://img1.sycdn.imooc.com/533e4d00000171e602000200-100-100.jpg)
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 包装你的代码来捕获此类抛出的错误
![?](http://img1.sycdn.imooc.com/5458506b0001de5502200220-100-100.jpg)
TA贡献1820条经验 获得超10个赞
urlib 不会为您提供数据使用
import requests
html=requests.get('https://www.youtube.com/results?search_query='+search_keyword)
text=html.text
text 包含所有 html 数据,因此从 text 搜索
添加回答
举报