像https://youtube.com/c/xyz一样解析Youtube频道

时间:2017-11-09 10:13:18

标签: youtube-api

当您拥有yourtube.com/channel/xyz或youtube.com/user/xyz等网址时,请求youtube频道或用户信息相当容易,因为您只需从网址中删除用户名/ channelid即可。但是,我将问题https://youtube.com/c/xyz与任何类型的资源相关联都存在问题。

它似乎不是用户,也不是渠道?

3 个答案:

答案 0 :(得分:1)

好。事实证明,您可以从YouTube手动申请custom url。它与userName或channelID没有任何关系。

目前还没有办法使用API​​从自定义网址获取信息,因此您需要请求网址并在元标记中查找实际的channelID。这是一个PHP script来做到这一点。希望有所帮助。

答案 1 :(得分:1)

在HTML中有一种称为canonical link element的东西。这是您放在与另一页重复的页面上的元素,该元素指向该内容的规范或“主”副本。

如果您查看https://youtube.com/c/Rsmuk1的来源并搜索“规范”,则会找到指向主要频道页面的元素。

requests

因此,您可以通过以您选择的语言请求页面然后解析出该元素来检索长URL。以下是使用from bs4 import BeautifulSoup import requests document = requests.get('https://www.youtube.com/channel/UCMi7-BZZX9x8CAhE-5juNyw') soup = BeautifulSoup(document.content, "lxml") links = soup.findAll('link', rel='canonical') for link in links: print(link['href']) # Prints: https://www.youtube.com/channel/UCMi7-BZZX9x8CAhE-5juNyw $GLOBALS['TYPO3_CONF_VARS']['FE']['pageNotFound_handling'] = \TYPO3\CMS\Core\Utility\GeneralUtility::getIndpEnv('TYPO3_SITE_URL') . 'error-404'; $GLOBALS['TYPO3_CONF_VARS']['FE']['pageNotFound_handling_statheader'] = $_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found';

的Python 3中的示例
{{1}}

答案 2 :(得分:0)

Youtube已更改HTML代码并删除了链接rel =“ canonical”,因此Jacob Tomlinson的解决方案不再起作用。

现在您需要从源代码的其他任何地方获取ChannelID,例如:

<meta itemprop="channelId" content="UCMi7-BZZX9x8CAhE-5juNyw">

PHP:

preg_match_all('#<meta itemprop="channelId" content="([^"]+)"#is', $html, $channel_id);