Разбор запроса на публикацию в Python

#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

Название песни, включенной в формат gifстроку с поста

Выход, что у меня есть

Как я могу разобрать это дело?

Ответ №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() или вообще не используйте профиль