【问题标题】:Use BeautifulSoup to get youtube description?使用 BeautifulSoup 获取 youtube 描述?
【发布时间】:2015-02-08 20:18:57
【问题描述】:

我正在尝试创建一个 python 函数,该函数接受 youtube url 视频链接并将描述(如果存在)作为字符串返回,其中所有非 ascii 字符都替换为空格。我在让它工作时遇到了一些麻烦。

任何人都有任何想法。我认为 <p id="eow-description" ></p> 在所有视频中都用于保存描述,但我不知道如何让它只返回一个完整的字符串,格式化我们如何看待它,而不是它在页面源中的格式化方式。

我正在使用这 2 个视频来测试它,有无描述。
https://www.youtube.com/watch?v=9bZkp7q19f0
https://www.youtube.com/watch?v=eHvccEXfacM

video_source = requests.get("https://www.youtube.com/watch?v=9bZkp7q19f0")
parsed_soup = BeautifulSoup(video_source.content)
print parsed_soup.find_all("p", {"id": "eow-description"})[0]

我不知道如何将其格式化为字符串。

【问题讨论】:

  • 到目前为止你能告诉我们你的代码吗?
  • 您是否考虑过使用YouTube Data API?它允许您使用/list 端点一次获取多个视频的信息,并且返回的信息包括描述。
  • 否则,请给我们您的实际代码,也许您有错误?
  • @MartijnPieters 你能检查我是否做得对吗:)
  • @MohitBhasi:恐怕你做得不对。

标签: python web-scraping beautifulsoup


【解决方案1】:

使用YouTube Data API 会更好,有一个list 端点每个 API 调用会返回一个或多个 id 的详细信息

获取自己的 API 密钥(请参阅 instructions,对于您计算机上的脚本,请使用服务器 API 密钥)和 Python client libraries;使用pip install --upgrade google-api-python-client 安装这些。

然后可以通过以下方式列出描述:

from apiclient.discovery import build

DEVELOPER_KEY = '<API key provided by Google>'
youtube = build('youtube', 'v3', developerKey=DEVELOPER_KEY)

ids = '9bZkp7q19f0,eHvccEXfacM'
results = youtube.videos().list(id=ids, part='snippet').execute()
for result in results.get('items', []):
    print result['id']
    print result['snippet']['description']
    print '-----'

演示:

>>> from apiclient.discovery import build
>>> DEVELOPER_KEY = '<get your own key here>'
>>> youtube = build('youtube', 'v3', developerKey=DEVELOPER_KEY)
>>> ids = '9bZkp7q19f0,eHvccEXfacM'
>>> results = youtube.videos().list(id=ids, part='snippet').execute()
>>> for result in results.get('items', []):
...     print result['id']
...     print result['snippet']['description']
...     print '-----'
... 
9bZkp7q19f0
▶ Watch HANGOVER feat. Snoop Dogg M/V @
http://youtu.be/HkMNOlYcpHg

PSY - Gangnam Style (강남스타일) 
▶ Available on iTunes: http://Smarturl.it/psygangnam
▶ Official PSY Online Store US & International : http://psy.shop.bravadousa.com/
▶ About PSY from YG Ent.: http://smarturl.it/YGfamilyAboutPSY
▶ PSY's Products on eBay: http://stores.ebay.com/ygentertainment
▶ YG-eShop: http://www.ygeshop.com

For More Information @
http://www.facebook.com/officialpsy
http://twitter.com/psy_oppa
http://twitter.com/ygent_official
http://me2day.net/psyfive
http://www.psypark.com
App Store: http://goo.gl/l9TU6
Google Play: http://goo.gl/UiEn1

© YG Entertainment Inc. All rights reserved.
-----
eHvccEXfacM

-----

【讨论】:

  • 您链接的说明中的第 5 步我该怎么做?
  • @Johnny 使用 API 密钥;我的代号为DEVELOPER_KEY
  • @Johnny:对不起;我已经有一个 API 密钥并且早就忘记了有不同的类型。我会为脚本使用服务器 API 密钥。
【解决方案2】:

Beautifulsoup 很慢,最好的方法是按照 cmets 中的建议使用 Google's YouTube API。它更简单:

def PrintEntryDetails(entry):
    print 'Video description: %s' % entry.media.description.text

不是你想要的,告诉我

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 2016-04-12
    • 2019-01-06
    相关资源
    最近更新 更多