Python Парсинг Avito Некорректный HTML
Всем привет! :) Уже не первый раз пишу парсер под авито на BeautifulSoup, но в этот раз столкнулся с такой проблемой:
requests.get().text возвращает вместо привычного HTML кода какой-то "зашифрованный"
import requests
from bs4 import BeautifulSoup
url = "https://www.avito.ru/irkutsk/kvartiry/sdam/na_dlitelnyy_srok-ASgBAgICAkSSA8gQ8AeQUg?cd=1&user=1&f=ASgBAQICAkSSA8gQ8AeQUgFAzAgkjFmOWQ"
html = requests.get(url).text
soup = BeautifulSoup(html, "lxml")
print(soup)
и вот что я получаю:
<h1>Подождите, идет загрузка.</h1> <div class="section"> <span> <img src="data:image/gif;base64,R0lGODlhAAEAAff/ANzsxf/TOMj1h9bt9Mnp9GjZ+/+9AP/idv3opf/WRaXo/fLz7f/EAbf4WEfX/wHE//T18sX6eAC9//3kl9brue705Jfl/ePs1db3p+T3ybz4ZPT6+/7+/ork/vry2Y3tAdny+v7kieriyqL0Kvvadq31Q+nYprvdi6fX6IvnAHfj///FC3Xb+/by5JXsE63TdZnX7Ozy9O3XmdH2m/Pr1czmptDSzv/NI57xI73XmZHuCOv03cfomfv7+fzehdz3tNa1W/n27Pn59//LG+z2+f/JFBTK/xrL/5vxHJbpJfTt3Mzzk/39+yjR/yHN//P47P/INqX0MYPe+zLS/zvU/7buZ+Tx0vf681m01v/fawjF/6n0O/zMRsfj7evs5P/cWvr05OX0+ZbxEuzctJTxC7L3TEfN+1vc/+Lx9qfqSP/PK/Lv5ebu8bTc6+3u6vTqzWng/9Xn7fr9/v/SLP/aUFHa///eYirP/8rx/qzsUt/f2DbJ/9je4v/yy73xcv/FEv3tu/3rsfHlw73u/fH55rLr/eHKifPlvPP2+Lvsdfj39MLsiL3l8vLisorL4rPj8vvVYg3J/+Tq7ZzpM4PjARPG///WUI/wAfv58vzTW4jS69LsrVDU/+vSifvOUV3U/OjMeXTB3PfdmfDfqeH5vnjM5+TPlfXpxY/mGLzh7are8Pv9+pvd9JjxF5TP5P/BHPz79pnGVv767f++ExvB/+r70vr+9u3hvbHtXP/CI4bG3u76/sTeoI/qCVPL9/DmyyLD/8D6bNzBdaHrPO/83P/EK/3vwSrF//vYa+j11f358f37+vj7/BC+/6j2Nffv1PfVa+bq4fXRYPTMZOPCaGjC4tDlsuT4/v/99mfP9KbzN//44lzS9efw2qz4PfXRWc/7jfj+8Orn4ODn6f/KDD7Y/6zkYeTl3bvx///xu4flCIrlDsPxf/jlsaHJa7Lm+an5NaHTVp/uLB7Q///88sHo9fftzqf3MP/QH/XRc//HB13f/wC8/4jkAf+7AP///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8
..и еще много таких же строчек
хотя сначала норм html возвращался, но спустя ~10 запросов через requests начал возвращать вот такое Если меняю город с "Иркутск" на "Москва", то HTML возвращается норм, а при смене обратно на "Иркутск" он становится таким.
Помогите решить вопрос. Всем благ и много-много знаний и добра :)
Ответы (1 шт):
Если скопировать полученный код и сохранить как html файл, запустить при помощи браузера, то получим такую картинку:
Попробуйте указать headers{"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"} У меня нет доступа к исходному кода авита, но я почти уверен что у них есть защита от парсеринга, раз они продают платное API.
P.S. Так же попробуйте включить allow_redirects, может быть вам это поможет. У меня не получилось повторить вашу ошибку, я делал куча запросам по разным городам и всё равно выдавало нормальный html.
Так же для парсеринга авито лучше использовать Selenium или аналог. Так как большая часть контента генерируется динамический, через ajaxs
