当您拥有yourtube.com/channel/xyz或youtube.com/user/xyz等网址时,请求youtube频道或用户信息相当容易,因为您只需从网址中删除用户名/ channelid即可。但是,我将问题https://youtube.com/c/xyz与任何类型的资源相关联都存在问题。
它似乎不是用户,也不是渠道?
答案 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';
{{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);