Auto ru parser github python

Парсер auto.ru

Пытаюсь для практики написать простой парсер auto.ru. При попытке получить полноценную информацию об объявлении, программа почему-то выдает несуществующие данные. Например, модель выдается, подходящая под категорию, с которой вытаскивается информация, но при переходе по вытащенной программой ссылке, пишется, что такой страницы не существует.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
from bs4 import BeautifulSoup import requests html_text = requests.get('https://auto.ru/krasnoyarsk/cars/great_wall/all/').text soup = BeautifulSoup(html_text, 'lxml') ad = soup.find('div', class_='ListingItem') ad_title = soup.find('a', class_='Link ListingItemTitle__link').text ad_price = soup.find('a', class_='Link ListingItemPrice__link') for ad_price2 in ad_price: ad_price2 = ad_price.find('span').text.replace('Â', '').replace('â', '₽').replace('½', '') ad_year = soup.find('div', class_='ListingItem__year').text ad_url = soup.find('a', class_='Link ListingItemTitle__link')['href'] ad_mileage = soup.find('div', class_='ListingItem__kmAge').text.replace('Â', '').replace('км', '') print(f''' Модель: Год: Пробег: Цена: Ссылка: ''')

Помогите, пожалуйста. Уже все способы, которые приходили в голову, чтобы решить проблему, перепробовал, ничего не помогает, да и просто не могу вообще сообразить, откуда даже чисто теоретически там появляются несуществующие данные.

Парсинг сайта ‘auto.ru’
Всем здорово,я только начинаю свой путь к парсингу сайтов и я бы хотел сделать парсер,который будет.

Создайте класс объектов Auto для подержанных машин со следующими характеристиками
Списки и классы в Python. 1. Создайте класс объектов Auto для подержанных машин со следующими.

Некорректно работают функции Auto-Tone, Auto contrast, Auto color
Не корректно работают функции Auto-Tone, Auto contrast, Auto color. Вот пример (как на картинке).

CSS-grid критерии выбора auto-fill и auto-fit
Здравствуйте. Изучаю CSS-grid. В каких случаях для построения сетки используется auto-fill, а в.

Как это работает? Объясните for(auto const row : Al) for (auto const element : row)
int main ()< const int row = 2; const int columns = 3; array<arrayint, columns>, rows> Al =.

Скорее всего сайт противится парсингу, надо, как минимум, вставить заголовки headers в get запрос.

Добавлено через 7 минут

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
HEADERS = { 'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3', 'Connection': 'keep-alive', 'Content-Length': '137', 'content-type': 'application/json', 'Cookie': '_csrf_token=1c0ed592ec162073ac34d79ce511f0e50d195f763abd8c24; autoru_sid=a%3Ag5e3b198b299o5jhpv6nlk0ro4daqbpf.fa3630dbc880ea80147c661111fb3270%7C1580931467355.604800.8HnYnADZ6dSuzP1gctE0Fw.cd59AHgDSjoJxSYHCHfDUoj-f2orbR5pKj6U0ddu1G4; autoruuid=g5e3b198b299o5jhpv6nlk0ro4daqbpf.fa3630dbc880ea80147c661111fb3270; suid=48a075680eac323f3f9ad5304157467a.bc50c5bde34519f174ccdba0bd791787; from_lifetime=1580933172327; from=yandex; X-Vertis-DC=myt; crookie=bp+bI7U7P7sm6q0mpUwAgWZrbzx3jePMKp8OPHqMwu9FdPseXCTs3bUqyAjp1fRRTDJ9Z5RZEdQLKToDLIpc7dWxb90=; cmtchd=MTU4MDkzMTQ3MjU0NQ==; yandexuid=1758388111580931457; bltsr=1; navigation_promo_seen-recalls=true', 'Host': 'auto.ru', 'origin': 'https://auto.ru', 'Referer': 'https://auto.ru/moskva/truck/used/', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0', 'x-client-app-version': '202002.03.092255', 'x-client-date': '1580933207763', 'x-csrf-token': '1c0ed592ec162073ac34d79ce511f0e50d195f763abd8c24', 'x-page-request-id': '60142cd4f0c0edf51f96fd0134c6f02a', 'x-requested-with': 'fetch' } response = requests.get(URL, headers=HEADERS)

Источник

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

Небольшой парсер собирающий объявления на auto.ru для их дальнейшего анализа

ErShilov/Parser_auto.ru

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Данный сборшик данных по сайту auto.ru работает на основе анализа результатов ответа на запрос в формате JSON отправленному на страницу поиска объявлений. В первом блоке кода выполняется анализ всего рынка по всему ценовому диапазону. Во втором блоке на основание этих данных формируется основной цикл который проходит по всему ценовому диапазону объевлений, собирает данные и сохраняет их в формате .xlsx в папку OUT.

About

Небольшой парсер собирающий объявления на auto.ru для их дальнейшего анализа

Источник

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

Parser: Auto.ru | Drom.ru + Telegram Bot

kde2podfreebsd/Auto.ru-Drom.ru-Scrapper

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Parser Auto.ru, Drom.ru, Telegram Bot

  1. Необходимо сохранение cookie в сессию для обхода re-captcha
  2. Все параметры поиска конфигурируются в url кроме радиуса поиска (радиус конфигурируется в cookie)
  3. На последней странице поиска убирает все объявления с бесконечным поиском не попадающими под поисковый запрос
const remove = (sel) => document.querySelectorAll(sel).forEach(el => el.remove()); remove(".ListingInfiniteDesktop__snippet");
  1. При отсутсвии элементов на странице заканчивает парсинг и заносит результат в бд (добавляет новые посты)
  1. Все параметры поиска конфигурируются в url
  2. Скрол страниц идет до первого совпадения объявления с бд
pip install -r requirements.txt
sudo docker stop $(sudo docker ps -a -q) sudo docker rm $(sudo docker ps -a -q)
docker-compose -f docker-compose.yml build docker-compose -f docker-compose.yml up
docker inspect pgdb | grep IPAddress ------------Output----------------- "SecondaryIPAddresses": null, "IPAddress": "", "IPAddress": "172.29.0.2",
app.config["SQLALCHEMY_DATABASE_URI"] = f"postgresql://root:root@172.29.0.2:5432/database_name>"

root:root — user/pass | database_name — должны быть аналогичны в docker-compose.yml

cd app/database python -m flask commands create_db

Создание сессии с cookie для Auto.ru

p = Parser() p.create_session(url = auto.ru search configured url>)

Pass Re-Captcha and configure search radius; Session will be saved in app.sessions.auto

Edit Selenium webdriver source for moving geckodriver.log in logs folder (by defualt cant change log dir)

Edit in webdriver.py (from webdriver.Firefox) DEFAULT_SERVICE_LOG_PATH to = "logs/geckodriver.log"

Install deps on your system for virtual display (requires by cli server)

Источник

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

Тестирование парсинга с auto.ru

bulatovdm/auto-ru-scrapping-test

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Тестирование парсинга auto.ru

Добрый день! В проекте представил часть приложения, которая отвечает за сбор данных с листинга auto.ru. Вначале расскажу суть проблемы, далее – шаги по настройке окружения, после – краткое описание работы. В конце будет ссылка на небольшое видео с демонстрацией.

Приложение собирало данные с auto.ru с помощью прокси. В конце августа auto.ru стал подменять данные при использовании такого метода сбора. Для получения кода используется библиотека requests. В результате тестов пришел к следующим выводам. По всей видимости, когда пользователь открывает сайт с обычного браузера, случайным образом генерируются cookie с идентификатором пользователя. Эта запись проверяется сервером. Если она есть, но не совпадает со «слепком браузера» (это некий идентификатор браузера, его параметры, сборка), то тут срабатывает система подмены данных.

Почему так считаю: дело не в прокси, вернее, не в них одних. Когда не используем прокси, если IP «чистый», то защита тоже не срабатывает. Например, моя домашняя машина корректно собирает данные, но при использовании с любых прокси отдает искаженные значения. То есть у auto.ru эта система работает в связке с прокси.

Сейчас переписываю проект с использованием «безголового» браузера с помощью selenium – там проблема не воспроизводится (но есть другая проблемы – скорость и ресурсы, которые «кушает» web-драйвер).

# Создаем виртуальное окружение python3 -m venv venv # Активируем рабочую среду source venv/bin/activate # Обновляем pip pip install --upgrade pip # Устанавливаем библиотеки pip install pylint pip install autopep8 pip install bs4 pip install requests

Если используем VS Code – в файле с настройками VS Code (.code-workspace) указываем:

< "folders": [ < "path": "." > ], "settings": < "python.languageServer": "Jedi", "python.formatting.autopep8Path": "autopep8", "python.autoComplete.extraPaths": [ "venv/lib/python3.8/site-packages", "modules", "configs", "utils" ], "editor.formatOnSave": true, "[python]": < "editor.insertSpaces": true, "editor.tabSize": 4 >, >, >

В папке extras есть файл module-pathes.pth. Его нужно закинуть в директорию venv/lib/python3.8/site-packages/ (чтобы модули из других директорий подтягивались)

Ну и перед запуском программы

Логика части приложения, которая вынесена в этом проекте – в файле app/offers_scrapper.py.

  1. Подготавливаем массив опций, включающий данные о прокси (в нашем примере – один прокси, для демонстрации – достаточно).
  2. Запускаем все это через Pool.
  3. Забираем данные со страницы через requests.
  4. Находим предложения на странице, получаем данные: ссылка, название, цена, пробег.
  5. Выводим.

Ссылка на видео с демонстрацией искажения данных:

Источник

Читайте также:  border-bottom
Оцените статью