【发布时间】:2021-05-09 11:03:51
【问题描述】:
我是 python 和网络抓取的菜鸟。 我正在尝试获取作为搜索结果出现的视频 URL 列表。我试过这个:-
import requests
from bs4 import BeautifulSoup as bs
search_term = "python"
page = requests.get("https://www.youtube.com/results?search_query=" + search_term)
soup = bs(page.content, 'html.parser')
vids = soup.findAll('a',attrs={'id':'thumbnail'})
url_list = []
for v in vids:
tmp = 'https://www.youtube.com' + v['href']
url_list.append(tmp)
print(url_list)
print(vids)
但输出只是
[]
[]
我做错了什么?
如果我这样做print(soup),它会打印出整个网页。
我希望url_list 数组填充有https://www.youtube.com/watch?v=abcdefgh123 或类似的URL
【问题讨论】:
-
您是否尝试在请求的标头中使用 User-Agent?
-
你看过
page里面的数据了吗?如果您尝试使用正则表达式运行一个简单的 href 查找器,您会发现返回的页面中没有视频的 href,那是因为 youtube 之后使用 javascript 加载数据,但您无法通过requests模块获得该数据 - 您需要像 selenium 这样的东西来运行一个完整的浏览器来加载结果
标签: python web-scraping beautifulsoup youtube