YouTube нравится использовать Python и BeautifulSoup

#python #youtube #beautifulsoup

#python #YouTube #beautifulsoup

Вопрос:

Множество результатов для PHP, которые нравятся / не нравятся на YouTube, но ничего на Python. Я хочу сократить количество лайков и антипатий с помощью BeautifulSoup, поскольку YouTube-API этого не включает.

Я знаю, что лайки и антипатии содержатся в этом классе span:

 <span class="watch-likes-dislikes">
<span class="likes">6</span> likes, <span class="dislikes">0</span> dislikes
        </span>
  

Спасибо.

Комментарии:

1. Вы пытаетесь определить количество лайков к видео на YouTube, проанализировав страницу с помощью BeautifulSoup или используя API Google? Людям, пытающимся ответить на ваш вопрос, было бы полезно, если бы вы отредактировали свой вопрос так, чтобы исключить лишние строки кода, чтобы они могли точно видеть, с чем вам нужна помощь.

Ответ №1:

Почему бы не использовать API данных YouTube? Видеопоток содержит

 <gd:rating average='4.553648' max='5' min='1' numRaters='233' rel='http://schemas.google.com/g/2005#overall'/>
  

внутри каждого <entry/> .

Комментарии:

1. Хорошо, я изучил это, и это то, что я хочу сделать, но не могу понять, как вызвать XML-файл, используя python и youtube video_id.

2. @David, ты можешь либо использовать YouTubeClient из клиентской библиотеки GData Python ‘s. Получите videoentry или извлеките и проанализируйте http://gdata.youtube.com/feeds/api/videos/{video_id} самостоятельно. Не забудьте зарегистрировать ключ разработчика , если вы делаете много запросов или зависите от этого сервиса.

3. Спасибо! code.google.com/p/python-youtube-datascraper/source/browse/…

Ответ №2:

Я думаю, что HTML теперь выглядит иначе, чем те, которые вы предоставили. Вот как я получаю количество лайков по состоянию на февраль 2017:

 import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import urllib2
import html5lib
from bs4 import BeautifulSoup
url = "https://www.youtube.com/watch?v=DNMlW_5Bmv4"
page = urllib2.urlopen(url)
soup = BeautifulSoup(page, 'html5lib')
soup.find("button",attrs={"title": "I like this"}).get_text()
# as of now, the number of upvote is 3240

# dislike is similar:
soup.find("button",attrs={"title": "I dislike this"}).get_text()
# which is 24 by now