Задать вопрос
@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 но если бы его не было, как тогда?
  • Вопрос задан
  • 1028 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 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
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы