@maxilian

Как спарсить все страницы по поиску в Youtube?

Нужна помощь в доработке скрипта, нужно спарсить все линки по поиску ключевого слова, не понимаю как сделать пагинацию через youtube. Выдает 20 результатов с главной страницы, а нужны все результаты поиска. Хотелось бы узнать возможно ли это без API.

Вариант с urlib:

import ssl
import certifi
import urllib.request
from bs4 import BeautifulSoup

textToSearch = 'test'
query = urllib.parse.quote(textToSearch)
url = "https://www.youtube.com/results?search_query=" + query
response = urllib.request.urlopen(url,context=ssl.create_default_context(cafile=certifi.where()))
html = response.read()
soup = BeautifulSoup(html, 'html.parser')
for vid in soup.findAll(attrs={'class':'yt-uix-tile-link'}):
    if not vid['href'].startswith("https://googleads.g.doubleclick.net/"):
        print('https://www.youtube.com' + vid['href'])


Вариант с selenium:

from selenium import webdriver 
import pandas as pd 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome('/Users/mkuzminetc/Documents/chromedriver') 
driver.get("https://www.youtube.com/results?search_query=upwork+approve&sp=EgIQAQ%253D%253D")

user_data = driver.find_elements_by_xpath('//*[@id="video-title"]')
links = []
for i in user_data:
            links.append(i.get_attribute('href'))
print(links)
  • Вопрос задан
  • 159 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы