kuchuluk
@kuchuluk

Как парсить olx?

На olx, как я понимаю, какая-то мощная защита от парсинга используется. Пробовал селениум на python, но он сразу понимает, что это робот и отдает заглушку. Пробовал BeautifulSoup и request:
import requests
from bs4 import BeautifulSoup

def get_data(url):
    headers = {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"
    }

    req = requests.get(url, headers)

    with open("projects.html", "w", newline='', encoding="utf-8") as file:
        src = file.write(req.text)

get_data('https://www.olx.kz/d/elektronika/telefony-i-aksesuary/mobilnye-telefony-smartfony/astana/')

также возвращает заглушку.
Подскажите, у кого-то вообще получается его парсить? Подскажите хотя бы куда копать. В частности еще интересует парсинг номеров телефона с объявления, но это на будущее, а вообще хотя бы страницу сайта.
  • Вопрос задан
  • 1849 просмотров
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
Ответ написан
Комментировать
@AnKus
Тема старая, но вот наткнулся на нее, во время поисков ответа на мой аналогичный вопрос. Наигравшись вдоволь с undetected_chromedriver и его всевозможными настройками, которые не дали результата, пришел к выводу, что спарсить ОЛХ можно путем ротации прокси. Но, есть еще способ, в частности получить номер телефона. Заключается он в том, что нужно отправить гет запрос на адрес с api, который возвращает сам номер. Загвоздка заключается в том, что в каждом таком запросе отправляется уникальный bearer токен. Его видно в dev tools браузера, можно его оттуда копирнуть, чтоб руами один запрос отправить. Но как брать автоматом этот bearer токен в каждой итерации и передавать его в запрос - это вопрос ... Кто решал такую проблему ?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы