Как спарсить элемент, который подгружается при помощи js?
Пытаюсь спарсить первое фото каждого из объявлений на этой странице: https://www.otodom.pl/pl/wyniki/wynajem/mieszkanie/cala-polska?ownerTypeSingleSelect=ALL&viewType=listing&limit=72
Однако получается спарсить картиннку только нескольких объявлений, остальные подгружаются при помощи js.
Что в таком случае можно предпринять и попробовать. Хотя бы подскажите, что могло бы помочь, чтобы не использовать селениум.
Ответы (3 шт):
Можно попробовать beautifulSoup.
Здесь чел на рекламмном сайте новостей оставил только ссылки на интересующие его новости: https://habr.com/ru/articles/544828/
в иннтрументах разработчика вижу, что подгружается json https://www.otodom.pl/_next/data/4JKqPCoRE7cVNqIQeP-Pf/pl/wyniki/wynajem/mieszkanie/cala-polska.json?ownerTypeSingleSelect=ALL&viewType=listing&limit=72&searchingCriteria=wynajem&searchingCriteria=mieszkanie&searchingCriteria=cala-polska&page=2
при попытке перейти на следующую страницу. правда там еще какие-то не опознанные мною вызовы
Минимальный, воспроизводимый пример:
import requests
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:129.0) Gecko/20100101 Firefox/129.0'}
params = {
'ownerTypeSingleSelect': 'ALL',
'viewType': 'listing',
'limit': '72',
'searchingCriteria': [
'wynajem',
'mieszkanie',
'cala-polska',
],
'page': '1',
}
response = requests.get(
'https://www.otodom.pl/_next/data/4JKqPCoRE7cVNqIQeP-Pf/pl/wyniki/wynajem/mieszkanie/cala-polska.json',
params=params,
headers=headers
)
for item in response.json()['pageProps']['data']['searchAds']['items']:
print(item['title'])
#print(item['totalPrice']['value'])
print(item['images'][0]['medium'])