python - 为什么 youtube 不给我视频链接而只给我他们的资源页面?

标签 python web-scraping youtube mechanize

出于某种原因,youtube 只给我他们的资源页面,而不是给我他们的视频链接 这正是我要寻找的。

代码:

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 时得到的结果:

enter image description here

如果您需要抓取 YouTube,互联网上肯定有很多不错的教程。您可能需要使用不同的库,例如 Selenium,或者以一种对 YouTube 隐藏您不是普通用户而是 Python 脚本的方式设置您的 cookie。

关于python - 为什么 youtube 不给我视频链接而只给我他们的资源页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68237609/

相关文章:

Python如何根据子字符串过滤字符串

python - Beautiful Soup 过滤关键字/属性 (python)

python - 使用 scrapy 抓取特定的表格元素

html - 在 iframe 中显示 Youtube 视频

python - 我如何拆分第二个 ", "

Python 脚本无法从 Outlook 获取最新邮件

video - 如何在 Joomla 1.5.23 中嵌入 YouTube 视频?

javascript - 嵌入式 YouTube 视频中出现 “catching” 错误

Python 多重处理 - 如何提高效率

python - 如何在python icrawler中使用搜索关键字重命名爬虫文件