2015-02-08 87 views
1

我試圖創建一個python函數,它接受一個youtube url視頻鏈接,並返回描述(如果存在)作爲一個字符串,並將所有非ascii字符替換爲一個空格。儘管如此,我仍然遇到了一些麻煩。使用BeautifulSoup獲取youtube描述?

任何人都有任何想法。我認爲<p id="eow-description" ></p>被用於所有視頻來保存說明,但我無法弄清楚如何讓它返回整個字符串,格式化了我們如何看待它,而不是如何在頁面源中格式化。

我正在使用這兩個視頻來測試它是否帶有說明。
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] 

我不知道如何去有關格式化爲一個字符串。

+0

u能告訴我們你的代碼這麼遠? – 2015-02-08 10:32:38

+0

您是否考慮過使用[YouTube數據API](https://developers.google.com/youtube/v3/docs/videos)?它允許您使用'/ list'端點一次獲得多個視頻的信息,並且返回的信息包含描述。 – 2015-02-08 10:32:48

+0

否則,請向我們展示您的實際代碼,也許您有錯誤? – 2015-02-08 10:33:07

回答

3

你會好得多使用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 

----- 
+0

對於鏈接的說明中的步驟5,我該怎麼做? – Johnny 2015-02-08 11:19:04

+0

@Johnny使用API​​密鑰;我的代碼將其命名爲「DEVELOPER_KEY」。 – 2015-02-08 11:58:48

+1

@約翰尼:對不起;我已經有一個API密鑰,並且很久以前忘記了有不同的類型。我會爲腳本使用服務器API密鑰。 – 2015-02-08 12:23:34

1

Beautifulsoup很慢,最好的方法是使用Google's YouTube API正如評論中所建議的。這是簡單得多:

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

不是你想要的,讓我知道