Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Парсинг, youtube, python, beautiful soup

Diz Dizel Профи (574), закрыт 1 год назад
Подскажите, знающие, как мне из супа, полученного с помощью beautiful soup выудить элемент со скрина? Элемент кликабельный. При нажатии по нему происходит переход по ссылке на само видео. Мне нужно из супа получить именно эту ссылку, при этом проверив на точное соответствие названия видео заданному мной названию, например "Как купить гараж".
Это мне подсказала нейросеть links = soup.find_all("a", "yt-uix-tile-link") - порожняк полный: так не работает.
Нагуглить ничего рабочего не смог по этому поводу. Что мне указать в скобках для корректной работы кода?
Лучший ответ
еБанзай Просветленный (26271) 1 год назад
этот код , который в инструментах разработчика, может быть сгенерирован с помощью javascript и в исходном html его может не быть или быть но с другой разметкой, классами и id. Открой исходниk html по Ctrl + U, и посмотри есть ли там этот код, именно его скачивает requests и именно с ним работает beautifulsoup.
А чтобы работать с тем кодом что на скрине, нужен доступ через браузер, типа selenium или типа того.
Diz DizelПрофи (574) 1 год назад
Спасибо за ответ. Дело в том, что в супе среди всего прочего есть это 5fIpeoxb4t4, ("videoId":"5fIpeoxb4t4"), что является например частью меня интересующей ссылки, например, https://www.youtube.com/watch?v=5fIpeoxb4t4
То есть теоретически я мог бы вытягивать нужные мне ссылки. Но не разобрался что указать в этой строке для получения хотя бы части ссылки и чтобы получать названия роликов: links = soup.find_all("a", ?)
еБанзай Просветленный (26271) Diz Dizel, а что нужно получить? вот примерно для ссылки и названия https://pastebin.com/dXpeYsQY
Diz DizelПрофи (574) 1 год назад
Да, спасибо большое, это работает. Постараюсь на основе этого додумать сам (upd. но тяжело дело идёт - мне стало очевидно, что тут вопрос строго на знание, а не на смекалку или логику).
Вообще я хочу на странице результата поиска видео - из первого же предложенного видео собрать эту всю информацию. На примере этого видео, из которого извлекается информация вашим кодом - вот из этой страницы получить всё то же, что даёт ваш код. (пример рандомный, мне не нужен гараж, я вообще чисто по фану хочу понять что-то новое для себя)
Diz DizelПрофи (574) 1 год назад
еБанзай Просветленный (26271) Diz Dizel, там будут сложности, поскольку страница поиска динамическая, и данные внутри хранятся в виде js скриптов. Нужная информация содержится в одном из них в виде json объекта. Логика такая, найти нужный тег <script> и вырезать из него нужный json. Потом в питоне распаршиваем этот json и по ключам вынимаем из него нужные данные, вот примерный код https://pastebin.com/Kwnie18S
Diz DizelПрофи (574) 1 год назад
Спасибо, добрый человек, за помощь начинающим! Буду пытаться разобраться.
Остальные ответы
Крутой Мастер (2139) 1 год назад
нафига ютуп взломал
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (274360) 1 год назад
мне подсказала нейросеть
Надо правильные вопросы задавать, нейросеть за тебя не может думать

Примерная схема работы с динамическим контентом

 from selenium import webdriver 
from selenium.webdriver.common.by import By

# Запуск веб-драйвера
driver = webdriver.Chrome()

# Загрузка страницы с динамическим контентом
driver.get("h ttps://example.com")

# Ждем некоторое время для загрузки динамического контента
driver.implicitly_wait(10)

# Находим элемент с помощью XPath (или других методов поиска)
element = driver.find_element(By.XPATH, "//div[@class='dynamic-content']")

# Получаем текст из элемента
content_text = element.text

# Выводим текст
print(content_text)

# Закрываем веб-драйвер
driver.quit()
Diz DizelПрофи (574) 1 год назад
Спасибо, конечно за ответ, но это не работает. Я пробовал селениум. По ХPATH - по вашему предложению ничего кроме ошибки не вытягивает. А вот по ID что-то выдягивает, например это <selenium.webdriver.remote.webelement.WebElement (session="ba1eb81c-661b-4970-9a5f-3242823f1575", element="5145ea47-aeb7-443c-a206-92246905afd0")>. Короче, ничего похожего на название ролика, ссылку или её часть.
Вы видимо сами не пробовали ваш же совет, а уже мне сразу про правильные вопросы предъявляете.
У меня получалось, пользуясь, beautiful soup и selenium вытягивать нужное мне на разных сайтах. Но с Youtube как раз ничего не работает
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (274360) Diz Dizel,
сами не пробовали ваш же совет
Я советов не даю. Тут проект Ответов. Читай ответ:
Примерная схема работы с динамическим контентом
Это не означает, что ты дал заказ и тебе , спотыкаясь, побежали его исполнять и благодарить , низко кланяясь за предоставленную бесплатную работу.
Diz DizelПрофи (574) 1 год назад
Я грубостей не допускал в своём вопросе, а вы первый задали снисходительный тон в своём ответе. Вы дали ответ, который гуглится за первые 4 секунды при поиске этой темы. Но и на том спасибо
Похожие вопросы