出于某种原因,youtube 只给我他们的资源页面,而不是给我他们的视频链接 这正是我要寻找的。p>
代码:
import mechanize
import urllib
import urllib.parse as urlparse
url = "https://www.youtube.com"
browser = mechanize.Browser()
browser.open(url)
for link in browser.links():
new_url = urlparse.urljoin(link.base_url,link.url)
b1 = urlparse.urlparse(new_url).hostname
b2 = urlparse.urlparse(new_url).path
print('http://'+b1+b2)
我得到的输出:
http://accounts.google.com/ServiceLogin
<http://www.youtube.com/
http://www.youtube.com/
我期望的输出:
https://www.youtube.com/watch?v=uVvZlH5gPA
https://www.youtube.com/watch?v=uVvasdad5
最佳答案
tldr:YouTube 不希望您抓取它
在我开始抓取链接之前,我会首先检查您返回的是哪个网站。 YouTube 做了各种各样的事情来防止抓取变得容易。如果您不熟悉数据抓取和库,我建议您先从简单的示例开始学习。
我运行了您的代码,将响应保存为 html
并在浏览器中查看了它。这显然不是您期望的标准网站。
# example.py
import mechanize
print(mechanize.Browser.open(https://www.youtube.com).read())
python3 example.py > example.html
这是我用浏览器打开 example.html
时得到的结果:
如果您需要抓取 YouTube,互联网上肯定有很多不错的教程。您可能需要使用不同的库,例如 Selenium,或者以一种对 YouTube 隐藏您不是普通用户而是 Python 脚本的方式设置您的 cookie。
关于python - 为什么 youtube 不给我视频链接而只给我他们的资源页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68237609/