Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/92: Рейтинг темы: голосов - 92, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 18.01.2019
Сообщений: 25

Парсер OLX, идеи реализации

27.03.2019, 23:42. Показов 18081. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ, подскажите пожалуйста подход к парсингу olx и похожих сайтов.
Сайт все запросы отвергает, может кто-то знает , поделитесь).
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.03.2019, 23:42
Ответы с готовыми решениями:

Парсер: ввод английских фраз и перевод. Идеи реализации
Парсил сайт, есть несколько вопросов. Ищем цитаты, по введенному слову, получаем список цитат на английском, с переводом, добавляем в...

Парсер olx.ua на lxml
Изучаю видео Bебинар “Парсинг HTML на Python“ https://www.youtube.com/watch?v=n6x1pzlRK8A То, о чем задаю вопрос, показано примерно на...

Парсер olx, поиск номеров
Доброго времени! Никто в последнее время не парсил olx.ua? Проблема парсинга номеров телефона без селениума, раньше делал по токену...

34
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
28.03.2019, 00:13
rastaffari,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from bs4 import BeautifulSoup
import requests
 
url = "https://www.olx.ua/rabota/roznichnaya-torgovlya-prodazhi-zakupki/"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:61.0) Gecko/20100101 Firefox/61.0'}
def request(url):
  return requests.get(url, headers=headers)
 
 
def get_html (request):
  return BeautifulSoup(request.content, 'html.parser')
 
 
 
 
if __name__ == '__main__':
  r = request(url)
  html = get_html(r)
  print(html)
0
0 / 0 / 0
Регистрация: 18.01.2019
Сообщений: 25
28.03.2019, 00:15  [ТС]
Та не все так просто . Попробуй номер вытащить)
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
28.03.2019, 00:33
Цитата Сообщение от rastaffari Посмотреть сообщение
Та не все так просто . Попробуй номер вытащить)
Селениум для этой цели нужен (если номер не указан в описании объявления).
0
0 / 0 / 0
Регистрация: 18.01.2019
Сообщений: 25
28.03.2019, 01:21  [ТС]
Через раз блокирует
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
28.03.2019, 02:08
rastaffari, код в студию.
0
49 / 21 / 6
Регистрация: 16.02.2019
Сообщений: 55
30.03.2019, 13:34
Цитата Сообщение от m0nte-cr1st0 Посмотреть сообщение
Селениум для этой цели нужен
100% Не нужен.

Цитата Сообщение от rastaffari Посмотреть сообщение
Через раз блокирует
Вы наверное заголовки HTTP не устанавливаете нужные. Частые запросы делаете. Прокси не используете.
Для начала Fiddlerom траффик исследуйте - что браузер передает сайту, что сайт в ответ передает браузеру.

Цитата Сообщение от rastaffari Посмотреть сообщение
Та не все так просто . Попробуй номер вытащить)
Элементарно. Нужно сделать AJAX запрос с нужными параметрами и номер телефона придет в открытом виде в jSON формате.
Эти параметры можно найти в HTML коде кнопки
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
30.03.2019, 13:47
rastaffari, код в студию.
Цитата Сообщение от SergeyDe Посмотреть сообщение
Нужно сделать AJAX запрос с нужными параметрами
bs так умеет?
0
49 / 21 / 6
Регистрация: 16.02.2019
Сообщений: 55
30.03.2019, 15:05
Цитата Сообщение от m0nte-cr1st0 Посмотреть сообщение
bs так умеет?

Если мы имеем ввиду один и тот же BS, то он умеет только извлекать данные с загруженной страницы.

Параметры для AJAX запроса можно получить через XPATH

Code
1
2
3
//div[@data-rel='phone']/@*
 
//script[contains(text(), 'phoneToken')]/text()
остается только правильно сформировать запрос.



А запросы делаются другими средствами. Например requests или еще как-то.
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
30.03.2019, 16:24
SergeyDe, мне просто интересно, как вы получить json с помощью того же requests, например. Я с таким не сталкивался просто ещё..
0
151 / 86 / 35
Регистрация: 05.08.2017
Сообщений: 257
30.03.2019, 17:01
Цитата Сообщение от m0nte-cr1st0 Посмотреть сообщение
мне просто интересно, как вы получить json с помощью того же requests, например. Я с таким не сталкивался просто ещё..
Так можно и без requests, можно стандартной либой для веб запросов. Главное знать куда уходит запрос, а узнать это не так уж и сложно
0
49 / 21 / 6
Регистрация: 16.02.2019
Сообщений: 55
30.03.2019, 19:28
Цитата Сообщение от m0nte-cr1st0 Посмотреть сообщение
мне просто интересно, как вы получить json с помощью того же requests, например
Например так (конечно же, если полученные данные в правильном JSON формате)

Python
1
2
3
4
import requests
 
response = requests.get(url, headers)
jo = response.json()
Цитата Сообщение от Resistanse Посмотреть сообщение
Главное знать куда уходит запрос
на самом деле, это не главное.
Главное что бы запрос был правильно сформирован - заголовки, куки....
1
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
31.03.2019, 03:15
Цитата Сообщение от SergeyDe Посмотреть сообщение
Главное что бы запрос был правильно сформирован - заголовки, куки....
как раз таки эта часть меня больше всего и интересует, хоть ТС уже и забил на это, наверное.
Всё же мне интересно, как выбудете вытаскивать номер. Если не хотите здесь публиковать код, можете в лс отписать..
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
01.04.2019, 13:18
Да. Все элементарно.
Цитата Сообщение от m0nte-cr1st0 Посмотреть сообщение
как выбудете вытаскивать номер
А что за номер? В каждой table объявы есть атрибут data-id="587575856". Проблем его взять никаких.

Добавлено через 5 минут
А понял - номер телефона уже на странице объявы.

Request URL: https://www.olx.ua/ajax/misc/contact/phone/DvfLv/?pt=какое_то_длинное_значение
Request Method: GET

В ответ получаем это:
Code
1
{"value":"096 805 7933"}
Требуется только вычислить значение параметра pt.
1
49 / 21 / 6
Регистрация: 16.02.2019
Сообщений: 55
01.04.2019, 14:32
Цитата Сообщение от Garry Galler Посмотреть сообщение
Требуется только вычислить значение параметра pt.
оно на странице. Как его получить я написал выше
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
01.04.2019, 21:16
Цитата Сообщение от SergeyDe Посмотреть сообщение
оно на странице
Я видел. Но этот токен не совпал с тем что отсылает браузер. Кроме того там есть еще один токен
HTML5
1
<input type="hidden" id="token" name="contact[token]" value="e32e58fal0SbveS/GxErUozoqKyHlu1lfFEfqGI0O9uoFpxGWW8="
который также не совпал. Поэтому, предположил, что его нужно как-то обработать.
Но не проверял.
0
49 / 21 / 6
Регистрация: 16.02.2019
Сообщений: 55
02.04.2019, 08:44
Цитата Сообщение от Garry Galler Посмотреть сообщение
Но этот токен не совпал с тем что отсылает браузер. Кроме того там есть еще один токен
странно, у меня совпал. Я смотрел как JS вычисляет ссылку.

Второй токен - для отправки сообщений.
Но помимо всего там нужно засылать куки и запрос должен быть(скорее всего) XHR.
0
0 / 0 / 0
Регистрация: 02.11.2019
Сообщений: 2
02.11.2019, 22:55
апну тему, ну и как сгенерировать pt?

пробовал var phoneToken, не совпадает, а при повторной отправке правильного запроса без куков в ответ приходят одни нули
0
 Аватар для __ALPHA__
302 / 160 / 87
Регистрация: 16.04.2018
Сообщений: 239
03.11.2019, 11:05
Все таки pt совпадает с phoneToken, но проблема в другом. Что бы получить номер телефона, в куках должен быть параметр _abck, который устанавливается после успешного POST-запроса по адресу https://www.olx.ua/resources/xxx а там передается параметр sensor_data который не понятно как получить.
0
0 / 0 / 0
Регистрация: 25.01.2020
Сообщений: 1
25.01.2020, 16:02
Так никто и не смог номер вытащить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.01.2020, 16:02
Помогаю со студенческими работами здесь

В поисках идеи по реализации
Всем привет, я - студент 1 курса, изучающий QT. Родилась идея не терять время и летом попрограть на QT. Решил написать 2048, но проблема...

Идеи для реализации БД в WF C#
Целый день сидел думал как можно сделать рабочий интерфейс Информационной Системы, прошелестил весь гугл- ничего годного не нашел.Только...

Идеи для реализации
Доброго времени суток. Закралась идейка одна в голову. И хочется узнать есть ли возможность реализовать такое. Допустим есть...

нужны идеи в реализации кода
В общем если кто подскажет хоть примерно как это должно выглядеть буду очень благодарен. Или просто части кода в качестве примера можно...

Программа-тест - идеи реализации
Доброго времени суток. Я понимаю, что тема повторяется, но от части. Мне нужно написать программу-тест, при этом вопросы задаются в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru