Уведомления

Группа в Telegram: @pythonsu

#1 Июль 31, 2019 15:57:18

nik.iwan2017
Зарегистрирован: 2017-06-17
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

BeautifulSoup парсин данных

Добрый день!
Пытаюсь получить данные широты и долготы по адресу:
https://xinit.ru/bs/250-01-6200-822902

код:

 html = requests.get('https://xinit.ru/bs/250-01-6200-822902')
soupe = BeautifulSoup(html.text, 'lxml')
poisk = soupe.find('div', class_='coords').find('dd').text

В ответ вместо 55.760024, 37.577924, получаю - {{coords.lat}}, {{coords.lon}}
Как с этим справиться, кто знает?
Заранее спасибо!

Отредактировано nik.iwan2017 (Июль 31, 2019 15:58:35)

Офлайн

#2 Июль 31, 2019 16:14:10

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

BeautifulSoup парсин данных

nik.iwan2017
Как с этим справиться, кто знает?
с помощью BeautifulSoup никак, реквестом вы получаете страницу, располагающуюся по адресу https/….., но на самом деле браузер вам показывает не этот HTML, после загрузки страницы браузер выполняет подключенный к ней JavaScript, и уже после отработки всех JS скриптов, на ней появляются нужные вам циферки. То есть для того, чтобы спарсить эту страницу, вам нужно либо выполнить весь джаваскрипт на ней, либо вкурить, как она работает и получать данные из каких-то внешних сервисов, к которым наверняка эта страница обращается. Реверс-инжиниринг, это вообще дело непростое.



Офлайн

#3 Авг. 1, 2019 08:43:47

Striver
От:
Зарегистрирован: 2006-10-26
Сообщения: 247
Репутация: +  22  -
Профиль   Отправить e-mail  

BeautifulSoup парсин данных

В ответ вместо 55.760024, 37.577924, получаю - {{coords.lat}}, {{coords.lon}}
Пара минут копания в браузере показывает, что координаты возвращаются вот по такому запросу:
https://xinit.ru/api/bs/250/01/6200/822902
Но без должной авторизации (скорее всего, через куки) этот запрос возвращает “403 Forbidden”.
Т.е. сначала надо как-то получить эти данные авторизации, потом можно пытаться делать запрос на этот адрес.
Если не делать такие запросы массово, то, возможно прокатит…



Отредактировано Striver (Авг. 1, 2019 08:44:09)

Офлайн

#4 Авг. 1, 2019 09:18:33

nik.iwan2017
Зарегистрирован: 2017-06-17
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

BeautifulSoup парсин данных

FishHook
Спасибо! Я так понимаю, что данная проблема, возможно, решиться с помощью использование selenium, а после уже BeautifulSoup. Буду пробовать. Но мне кажется при массовых запросах это будет довольно долго.

Офлайн

#5 Авг. 1, 2019 09:21:51

nik.iwan2017
Зарегистрирован: 2017-06-17
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

BeautifulSoup парсин данных

Striver
Большое спасибо! Сейчас попробую несколько запросов, если будет сайт как-то препятствовать, то уже запущу какой-нибудь Charles и буду смотреть как выдаются куки и тд.

Офлайн

#6 Авг. 3, 2019 02:07:54

ZiG
Зарегистрирован: 2018-12-16
Сообщения: 47
Репутация: +  0  -
Профиль   Отправить e-mail  

BeautifulSoup парсин данных

nik.iwan2017
а зачем после selenium пользоваться BeautifulSoup? Selenium очень хорошо вытаскивает инфу.
Для изучения, посоветовал бы книжку, хоть старенькую, но полезную Скрапинг веб-сайтов с помощью Python-2016 - Райан Митчелл. Там про Selenium норм написано. В инете лежит на халяву.

Офлайн

#7 Ноя. 2, 2019 15:15:21

Kolonist
Зарегистрирован: 2019-11-02
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

BeautifulSoup парсин данных

Зачем так извращаться, если есть готовая библиотека для получения всех этих данных: https://github.com/kolonist/bscoords

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version