Как очистить видео на YouTube, чтобы получить больше видео, чем на одной странице? - PullRequest
0 голосов
/ 25 апреля 2019

Я хочу почистить YouTube для сбора описаний видео на основе моего поискового запроса.Я использую BeautifulSoup4 для этого.Я успешно обнаружил URL видео.Проблема, с которой я сталкиваюсь, заключается в том, что я хочу собрать как минимум 2000 ссылок на каждую категорию.Но по одному запросу YouTube отображает только 20 видео.Как мне собрать URL-адреса других видео?

from bs4 import BeautifulSoup as bs
import requests

BASE_URL = "https://www.youtube.com"
BASE_SEARCH_URL = "https://www.youtube.com/results?search_query="

query = "travel+blogs"

r = requests.get(BASE_SEARCH_URL + query)
page = r.text
soup = bs(page, 'html.parser')
vids = soup.findAll('a', attrs={'class': 'yt-uix-tile-link yt-ui-ellipsis yt-ui-ellipsis-2 yt-uix-sessionlink spf-link '})

video_urls = [BASE_URL + vid['href'] for vid in vids]

print(video_urls)

Проблема, с которой я сталкиваюсь, заключается в том, что я хочу собрать как минимум 2000 ссылок на каждую категорию.Но по одному запросу YouTube отображает только 20 видео.Как мне собрать URL-адреса других видео?

Ответы [ 2 ]

0 голосов
/ 17 июня 2019

Selenium более вероятно использовать с сайтами javaScript Heavy, но он довольно медленный по сравнению с BeautifulSoup, когда речь идет только об очистке данных.

Итак, я нашел очень простой способ работы с youtube.проблема бесконечной прокрутки без использования селена.

следующие шаги:

1.fetch URL https://www.youtube.com/results?search_query=PHP+tutorials

2. пролистывать ниже URL и увеличивать страницу на 1 каждый раз,https://www.youtube.com/results?search_query=PHP+tutorials&page=1

вы получите 20 записей в каждой итерации.

from bs4 import BeautifulSoup
import requests
for i in range(1,10):
    url = "https://www.youtube.com/results?search_query=php+tutorial"+"&page="+str(i)
    source = requests.get(url).text
    code = BeautifulSoup(source,'lxml')
    print(code.prettify())

вы получите файл кода для каждой страницы, содержащей 20 видео каждая.

0 голосов
/ 05 июня 2019

Попробуйте использовать Селен вместе с BeautifulSoup. Selenium позволяет вам прокручивать страницу вниз, импортируя:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

и использование driver.find_element_by_tag_name('html').send_keys(Keys.END) для прокрутки вниз (driver - это объект Selenium Webdriver)

Для вашего случая использования вы можете прокручивать до 100 циклов вниз, каждый раз заполняя 20 результатов, и вы можете использовать приведенный выше код очистки после получения необработанного HTML с помощью driver.page_source

На заметку, однако, я бы предложил вам использовать API данных YouTube. Это довольно легко начать и бесплатно. Это будет работать намного быстрее и эффективнее. https://developers.google.com/youtube/v3/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...