Задача:
Настроить парсер avito.ru, собрать данные по объявлениям о продаже недвижимости (описание квартиры, адрес, цена, контактные данные продавца, включая контактный телефон).
Описание:
Один из самых популярных сайтов объявлений Avito.ru частично защищен от парсинга. При попытке отследить запросы которые отправляются при работе с сайтом инструментами разработчика, запускается скрипт, который препятствует этому. Также номер телефона защищен от парсинга (чтобы его увидеть необходимо нажать на кнопку «показать телефон»).
Тестовая настройка, выложенная в данной статье, скачивает информацию об объявлениях с первых двух страниц раздела о продаже квартир в г. Москве (начальная ссылка для парсинга задается в исходных данных).
Выводится гиперссылка на объявление на сайте avito.ru, название объявления, время и дата размещения, номер объявления на сайте avito, цена за объект продажи, станция метро, адрес, описание объекта, контактное лицо и телефон (в тестовой настройке вывод телефона отключен).
Дополнительно могут быть настроены следующие столбцы: количество комнат, площадь квартиры, этаж, тип дома (панельный, кирпичный), новостройка или вторичное жилье и другие.
При необходимости доступно скачивание фотографий объекта.
Данный парсер может быть переработан под любые разделы сайта avito.ru
Внимание! Вывод номера телефона возможен только если парсинг осуществляется с территории России, Украины, Белоруссии. Для парсинга номера телефона из других стран необходимо использование прокси-сервера (в программу и настройки не входит).
Для приобретения полной версии настройки этого парсера, обращайтесь на почту, с указанием ссылки на эту статью.
Парсер Авито
Требования:
- Версия Python — от 3.6.x
Что делает парсер:
Собирает данные:
- Название товара
- Цена товара
- URL товара
- Номер телефона продавца
с сайта https://avito.ru/ и импортирует их в Excel таблицу.
Для того чтобы запустить скрипт:
git clone https://github.com/DimaKalbfleysh/Avito.git
Потом запустить файл main и поменять параметры:
city = cities["Ижевск"] # Вместо "Ижевск", введите нужный Вам город category = dict_categories["Велосипеды"] # Вместо "Велосипеды", ввидите нужную Вам категорию direction = get_dict_district(city, list_ip) # Если в city метро, то direction = get_metro(city, proxy_list) district_or_metro = 'district' # 'district' или 'metro' number_of_threads = 5 # Количество потоков, чем больше, тем быстрее будет работать скрипт.
Ручное редактирование десятков или сотен объявлений занимает много времени. Менеджер Авито по работе с рекламными агентствами Николай Кондратенко рассказал, как сэкономить время и быстро выгрузить объявления в нужную дату, дублировать на новые города, расставить визуальные акценты, загрузить изображения или изменить цены, а также перенести их в другой аккаунт.
Николай Кондратенко, Менеджер Авито по работе с рекламными агентствами
Предположим, вы создали объявления на Авито вручную. Продажи пошли, и спустя время вы решили масштабироваться. Например, показывать объявления жителям соседних городов, если это разрешено правилами Авито (зависит от категории), или публиковать их в определенные даты. Вы можете вручную скопировать и отредактировать объявления в интерфейсе Авито, но на это уйдет много времени, если у вас их больше десяти. Хорошая новость: можно легко и быстро редактировать или масштабировать объявления через файл обратной выгрузки.
Получайте до 8% от оборота клиентов на Авито
Продвигайте клиентов на Авито и возвращайте до 8% от их оборотов на площадке. Только для участников партнерской программы eLama
Узнать больше
Для чего нужен файл обратной выгрузки
Файл обратной выгрузки — это файл с данными об объявлениях, который можно скачать на Авито, отредактировать и загрузить обратно. Тогда все изменения появятся в объявлениях и вам не нужно будет менять их вручную.
Выгрузка в нужную дату
Зайдите в раздел «Автозагрузка», нажмите «Настройки» и выберите объявления, с которыми хотите работать — например, активные. Впишите почту и нажмите «Скачать файл с объявлениями». На почту придет письмо, в котором будет Excel-файл обратной выгрузки. В случае, если объявлений сотни, вы получите письмо в течение часа, если их меньше — быстрее.
Откройте скачанный файл и добавьте в него столбец с заголовком DateBegin. Это параметр, который поможет опубликовать объявления на Авито в конкретный день и час.
Укажите в столбце DateBegin год, месяц и день напротив каждого объявления. Если важны конкретный час и минута, впишите и их по формату:
-
Дата: 2022-12-24,
-
Дата и время: 2022-12-22T17:35:00+03:00, где +03:00 — прибавка времени к часовому поясу Москвы. Например, если вы запускаете объявления в Омске.
В первом случае публикация пройдет в начале дня по московскому времени, во втором — с точностью до часа.
Подпись: В примере DateBegin мы вставили в столбец G Alt + Shift + 5
Затем вернитесь в раздел «Автозагрузка» и загрузите файл с объявлениями обратно на Авито. Для этого в настройках укажите способ загрузки «Вручную», выберите файл и загрузите его. Теперь объявления появятся в вашем аккаунте в нужные даты и часы.
Важно: активировать в конкретную дату можно либо новые объявления, которые вы еще не запускали, либо объявления, со дня публикации которых прошло более 30 дней. Если поставить DateBegin на завтра объявлению, которое мы разместили вчера, оно не активируется заново: сначала должны открутиться 30 дней.
Дублирование на несколько городов
Предположим, вы проводите онлайн-консультации и размещаете объявления о них в Москве, Петербурге, Сочи, Красноярске и других городах. Создавать копии объявлений вручную долго. Вместо этого можно сделать вручную одно объявление и скопировать его для других городов с помощью файла обратной выгрузки.
Создайте первое качественное объявление: с оптимальным фото, заголовком и описанием. Опубликуйте его и выгрузите в формате Excel.
Идите путем, описанным выше: зайдите в раздел «Автозагрузка», нажмите «Настройки» и выберите объявления, с которыми хотите работать. Укажите почту, нажмите «Скачать файл с объявлениями» и получите на почту письмо с Excel-файлом обратной выгрузки.
Затем:
- Скопируйте строки параметров объявлений, начиная с третьего столбца.
- Вставьте копии сразу под оригинальными параметрами.
- В скопированных строках замените город. Публиковать объявления в разных городах можно в определенных категориях — посмотрите условия в справке Авито.
- Повторите несколько раз, чтобы разместить объявления в нужных городах.
- Первый столбец не нужно заполнять — в нем находится Авито ID, который Авито сам присваивает объявлениям.
- Второй столбец — это внутренний ID объявления, в нем можно поставить цифру 1 и растянуть на все объявления в каждом городе.
Подпись к изображению: Должно получиться так: у новых объявлений новые ID во втором столбце и новый город
Сохраните файл, в разделе «Автозагрузка» зайдите в настройки — укажите способ загрузки «Вручную» — выбрать файл и загрузить его.
Визуальные акценты в заголовке и описании
В опубликованных объявлениях можно визуально выделять заголовок и описание. Для этого выгрузите в разделе «Автозагрузка» XML- или XLS-файл с объявлениями, а затем используйте Online HTML Editor:
- Откройте Online HTML Editor.
- Вставьте в поле слева текст из описания объявления.
- Выделите жирным слова, к которым хотите привлечь внимание.
- Опишите свойства товара в виде списка и выделите буллетами.
- Скопируйте код из правого поля и вставьте в исходный файл в столбец Description.
- Загрузите файл обратно на Авито.
Теперь в объявлении появятся визуальные акценты, а вы можете вносить их не вручную, а массово.
Загрузка изображений
Чтобы загрузить изображения объявлений через файл автозагрузки, нужно найти столбец Image Urls. Вставьте в него прямую ссылку на изображение. Ссылка на Google Диск не подойдет: найдите способ открыть картинку в браузере, скопируйте URL и для проверки вставьте в адресную строку. По ссылке должна открываться только картинка.
Теперь добавьте этот URL в нужные объявления в Excel-таблице, и загрузка файла обновит их изображения на Авито.
Изменение цен
Вы можете быстро скорректировать цены через кабинет Авито Pro или через файл обратной загрузки.
Если у вас 10-20 объявлений:
- Зайдите в кабинет Авито Pro.
- Отметьте галочкой нужные объявления.
- Нажмите «Изменить цену» и увеличьте или уменьшите ее на несколько процентов.
Если у вас 100-200 объявлений, выгрузите Excel-файл, замените цены на актуальные в столбце Prices и загрузите файл обратно на Авито.
Перенос объявлений между аккаунтами: 2 способа
Предположим, вам нужно перенести объявления с одной учетной записи в другую. Это можно сделать двумя способами — через службу поддержки и через обратную выгрузку.
Через службу поддержки
Для удобства пронумеруем учетные записи:
- Первая запись — та, в которой опубликованы объявления.
- Вторая запись — та, в которую его нужно перенести.
В начале получите ID объявлений, которые хотите перенести. Для этого выгрузите файл в разделе «Автозагрузка» либо зайдите в статистику кабинета Avito Pro, там выберите «Общая» и скачайте отчет в XLS. В обоих случаях вы получите файл, внутри которого будут ID объявлений.
Сохраните ID объявлений, которые нужно перенести, в новый файл и отправьте на почту поддержки shop_support@avito.ru два письма.
С первой учетной записи напишите: «Добрый день! Нам нужно перенести объявления из вложения в другую учетную запись (укажите ID второй записи)». И прикрепите к письму таблицу с ID объявлений.
Со второй учетной записи напишите: «Добрый день! Нам нужно загрузить эти объявления с учетной записи (укажите ID первой записи)». И снова прикрепите к письму таблицу с ID объявлений.
Поддержка поймет, что обе учетные записи связаны, и перенесет объявления.
Если во второй учетной записи оплачен и активен тариф, то новые объявления будут сразу активированы. Если у обеих записей нет тарифов, тогда нужно в чате службы поддержки с каждой учетной записи написать «Нам нужно перенести объявления». Поддержка напишет на почты обеих записей ответ: пришлите ID объявлений, которые нужно перенести. Прикрепите в ответ ID объявлений и поддержка их перенесет.
Через файл обратной загрузки
В личном кабинете зайдите в раздел «Автозагрузка», выберите настройки и скачайте файл с объявлениями. Напишите письмо в службу поддержки по адресу shop_support@avito.ru
«Добрый день! Мы сделали обратную выгрузку и собираемся перевыставить эти объявления из-под учетной записи с ID NNNNNN (укажите ID второй записи). Заблокируйте их, пожалуйста, в текущей учетной записи».
Так вы предупредите поддержку: она не посчитает подозрительными новые объявления во второй записи и не заблокирует их. Дождитесь ответа о том, что старые объявления заблокированы, и загрузите файл с объявлениями в разделе «Автозагрузка» в новой учетной записи.
Читайте также: Как составить объявление и не получить отклонение или блокировку
Используйте лайфхаки для массового редактирования объявлений на Авито и экономьте время!
6 часов назад, SergeiMashkin сказал:
с платным приложением
крон работает
но как настроить выгрузку в правильные рубрики ??
выгружает в «категория не указана»
где сделать настройки
???
Если у вас есть Категория не указана — значит в файле выгрузки нет категории. В файле она должна быть в таком виде
6 часов назад, SergeiMashkin сказал:
фото — в принципе не загружаются
Фотографии загружаются после того как вы запускаете скрипт
http://ваш_сайт/cron_excel_parser.php
Именно он запускает процесс парсинга файла и загрузку фото, если фото нет, значит его в файле Excel нет, смотрите файл Excel
Можно на сервере установить запуск парсера через крон. Для этого в кроне прописать вот такую строчку нужно
34 * * * * /usr/bin/wget -O /dev/null -q http://ваш_сайт/cron_excel_parser.php
34- это запуск каждый час в 34 минуты. В результате если вы в программе у себя нажимаете выгрузить файлы, то они загружаются на сервер. А затем скрипт будет раз в час по одному файлу загружать. Раз в час сделано для того, чтобы картинки успели загрузиться. И в файле Excel лучше не делать сразу много записей. Зависит от вашего хостинга, если на хостинге ограниченные ресурсы, то нужно закачивать по 10-20 объявлений. Но тогда можно запускать раз в пять минут, например.
*/5 * * * * /usr/bin/wget -O /dev/null -q http://ваш_сайт/cron_excel_parser.php
Т.е. чем меньше порции объявлений, тем они быстрее загружаются и тем чаще можно запускать скрипт парсинга.
6 часов назад, SergeiMashkin сказал:
файлы из грабера выгружаются параллельно в два места
cashe/
и
cashe/arch/
из которого выгребает крон?
где заменять ??
парсер забирает файлы из /cache/
а каталог /cache/arch/ — нужен для того чтобы складывать архивные файлы и можно было при необходимости их перепарсить, если скопировать в /cache/
Это все прописано в post.php
<? $file_name = $_POST['file_name']; $file_data = $_POST['file_data']; if ( $_GET['secure'] != '3452345345t' ) { echo 'ERROR:secure code incorrect'; exit; } file_put_contents($_SERVER['DOCUMENT_ROOT'].'/cache/upl/' . $file_name, pack('H*', $file_data)); file_put_contents($_SERVER['DOCUMENT_ROOT'].'/cache/upl/arch/' . $file_name, pack('H*', $file_data)); echo 'OK'; ?>
и в cron_excel_parser.php
$file_to_parse = get_first_xls_from_dir(SITEBILL_DOCUMENT_ROOT.'/cache/upl/');
6 часов назад, SergeiMashkin сказал:
еще обнаружил проблему:
улица вываливается в формате:
район, улица, дом
и естественно сразу убита карта — не работает
В загружаемом файле все разделено на нужные колонки, вы видимо грузили вручную поэтому у вас так все разлетелось.
6 часов назад, SergeiMashkin сказал:
а так
деньги на ветер
и за грабер и за эксель
Если не можете настроить, можете сказать доступ к фтп на сайт, настроим вам.
Парсер авито онлайн
Парсер временно не работает
Приблизительное время восстановления работы парсера — 25 апреля
На этой странице Вы можете получить информацию из любых объявлений о товарах и услугах от частных лиц или компаний с сайта avito.ru.
Информация сохраняется в excel и csv файлы и высылается на указанный email после оплаты и сбора информации с сайта. Скачать пример файла
Стоимость одного объявления: 0 руб.
Информация из категории «Работа» не сохраняется
Введите Ваш e-mail
Лимит объявлений:
Список ссылок (укажите одну или несколько ссылок на объявления)
Количество ссылок: 0Ссылку можно скопировать из адресной строки браузера после применения нужных фильтров на avito.ru Пример: https://www.avito.ru/izhevsk/transport
С телефоном можно парсить:
1. Частные объявления (user=1) из категорий «Услуги», «Недвижимость», «Мотоциклы», «Грузовики», «Водный транспорт»
2. Объявления компаний (user=2) из всех категорий.
Без телефона можно парсить все объявления.
Страницы магазинов и конкретных пользователей не парсятся.