Задать вопрос
@Fee1in

Как спарсить страницу с json и контент который подгружается при листании на Python?

Добрый день! Хотел получить список стран с сайта, а потом кликнув по ним забрать контент внутри, сначала попробовал BeautifulSoup, но увидел что не получается, потом решил попробовать Selenium, страницу грузит, но на вкладке Network пуста и тоже ничего не выходит. Вижу что отправляется json запрос xhr /countries, но как мне его забрать?
Та же проблема с контентом внутри, не могу забрать название станций
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.radio-browser.info/gui/#!/countries')
name = driver.find_elements_by_xpath("//div[@class='ng-scope']//a")
for i in name:
    print(i.get_attribute("innerHTML"))

Этот код думаю работал бы если не было json. Понимаю, что там есть API но если бы его не было, как тогда?
  • Вопрос задан
  • 1080 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Профессия Python-разработчик + ИИ
    10 месяцев
    Далее
Решения вопроса 1
origami1024
@origami1024
went out for a night walk
Тут не нужно парсить что-то, просто забирай из API данные.
Например список стран тут: https://de1.api.radio-browser.info/json/countries
Данные по конкретной стране так: https://de1.api.radio-browser.info/json/stations/b...

Например, через requests.get:
import requests
raw = requests.get("https://de1.api.radio-browser.info/json/stations/bycountryexact/Ukraine")
print(raw.content)


Ну и конвертируй JSON в объект так, для полноты ответа:
import json
jsoned = json.loads(raw.content)
print(jsoned[0])
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
Здесь ни selenium, ни BS4 не нужен. Здесь достаточно requests и json.
Так получаем список стран:
import requests
import json

url = 'https://de1.api.radio-browser.info/json/countries'

response = requests.get(url)
countries = json.loads(response.text)

for country in countries:
	name = country['name']
	stationcount = country['stationcount']
	print(f'{name} - {str(stationcount)}')

Что бы получить данные по стране, обращаемся по адресу:
https://de1.api.radio-browser.info/json/stations/b...
вместо россия, указываем страну из предыдущего ответа.

страницу грузит, но на вкладке Network пуста и тоже ничего не выходит
и
Вижу что отправляется json запрос xhr /countries
несостыковка).
Посмотрите в интернете, что такое xhr. А также почитайте про инструменты разработчика, это упростит анализ сайта.
5ec190758bce4994130778.png
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽