Нужна помощь в доработке скрипта, нужно спарсить все линки по поиску ключевого слова, не понимаю как сделать пагинацию через 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)