Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вопрос про парсинг авито.

Александор Заградский Мудрец (14720), на голосовании 2 года назад
Делаю парсер, для опыта, для себя, поэтому точного ТЗ нет, а стоит задача разобраться в теме.
Использую ssl, т.к. требуется обмен ключом SHA256, иначе не отдает ничего, так же request для запросов и BeautifulSoup для парсинга. С последним до конца еще не разобрался, и думаю ответ на мой вопрос кроется где то в теме BS4. Код для формирования я нагло скомуниздил, и тот работает, поэтому до конца в нем не разобрался. Но request.text отдается, поэтому я не парюсь.

Когда дошел до парсинга, появилась проблема. Используя bs4.select для выбора див класса, работает только если указать ("h3.title-root-zZCwT.iva-item-title-py3i_.title-listRedesign-_rejR.title-root_maxHeight-X6PsH.text-text-LurtD.text-size-s-BxGpL.text-bold-SinUO")
При попытки составить запрос для селекта как то иначе, выдача прекращается. Подскажите пожалуйста правила составления запроса для BeautifulSoup .select (/find, find_all). Можем быть не то копирую со страницы сайта. Прилагаю скриншоты
Голосование за лучший ответ
Албибек Квотербеков Мыслитель (8204) 2 года назад
Авито сложный для парсинга, он очень не любит, когда его парсят и всячески может вставлять палки в колеса.
Для изучения парсинга есть спец. сайты типа toscrape.com или scrapingclub.com

По поводу парсинга.
Во-первых лучше изменить user-agent в requests на браузерный (по-умолчанию в requests там какой-то номинальный, за него могут забанить как бота),
Во-вторых лучше использовать referer, это может отслеживаться сайтом (как борьба с парсингом), также лучше включить session cookies, мало ли.. это тоже может отслеживаться.
В следующих...
Библиотека requests получает исходный html код страницы (то что можно посмотреть в браузере по Ctrl+U), именно этот html (request.text) затем распаршивается BS4.
То что Вы смотрите это dom дерево в инструментах разработчика. В нем применены javascrit, css и др. и из-за этого значения id, классов и вообще разметка страницы может отличаться от исходного html. Поэтому парсер BS4 не находит эти атрибуты.
На простеньких сайтах можно ориентироваться по dom-дереву, а на сложных типа авито, вк и др. лучше сверятся с исходным html
Кстати разметка сайта также может различаться у разных user-agent`ов (например мобильный/десктопный).
Александор ЗаградскийМудрец (14720) 2 года назад
ну да, вы правы. У меня не получается разобраться в архитектуре css js, что бы грамотно их обрезать BS4
Албибек Квотербеков Мыслитель (8204) Александор Заградский, Можно потренироваться на тестовых сайтах, ссылки выше. Там и имитация магазинов и пагинация и прочее. И разметка страниц простая
Addk Ученик (230) 1 месяц назад
Здравствуйте,у вас в итоге получилось сделать Парсинг Авито ?
Похожие вопросы