#python #html #http #parsing
Вопрос:
Добрый день! У меня возникли проблемы с анализом динамического элемента с сайта радиостанции. Здесь вам нужно название текущей песни
import requests
from bs4 import BeautifulSoup
songsNameList = []
url = f"https://top-radio.ru/web/russkij-xit"
q = requests.get(url)
result = q.content
soup = BeautifulSoup(result, 'lxml')
songs = soup.select("#se_igra")
for song in songs:
print(song.find('span'))
songsNameList.append(song.find('span'))
https://top-radio.ru/web/marusya-fm
Название песни, включенной в строку с поста
, что у меня есть
Как я могу разобрать это дело?
Ответ №1:
Этот сайт использует java-скрипт. Красивого супа для этого недостаточно. Используйте Селен для такой задачи. Вы можете прочитать больше здесь. https://selenium-python.readthedocs.io/ Здесь вы можете скачать geckodriver для Firefox. https://github.com/mozilla/geckodriver/releases Затем добавьте в свой код эти строки:
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.firefox.options import Options
binary = FirefoxBinary(r'/usr/bin/firefox') #add here in quotes path to your Firefox
caps = DesiredCapabilities.FIREFOX.copy()
caps['marionette'] = True
driver = webdriver.Firefox(firefox_binary=binary, capabilities=caps, firefox_profile=profile,
executable_path='/usr/bin/geckodriver') ##add here in quotes path to downloaded geckodriver
q = driver.get(url)
Комментарии:
1. Спасибо вам за этот путь. Когда-то использовал solve с драйверами браузера для другого проекта, это приложение не было загружено в docker-compose, nginx и удаленный источник. Существуют ли решения для анализа без водителя для более отдельных, эффективных и близких шагов в этом направлении?
2. Вы можете использовать его без головы
3. Переводчик преподносит сюрпризы. Я добавил строку FirefoxProfile в код. После запуска приложение не отправляет текущую песню
4.
profile = FirefoxProfile("/home/ilya/.mozilla/firefox/")
сprint(q)
Output: None
5. профиль = веб-драйвер. FirefoxProfile() или вообще не используйте профиль