Форум сайта python.su
Добрый день. Хочу спарсить эти данные раздельно, но не могу т.к. они все имеют один и тот же класс. Т.к. они имеют при этом разные href, я могу просто прописать в питоне как дополнительное условие этот href, чтобы разделить. Если да, то будьте любезны)) что нужно дописать в строчку кода например
‘metro’: item.find('a', class_='_93444fe79c–link–3ruIo').get_text()
,или если этого недостаточно, то подскажите пожалуйста как это правильно сделать.
Прикреплённый файлы:
Screenshot_1.png (103,9 KБ)
Офлайн
mutbka63дай ссылку и какие данные нужно достать(не в html а на реальной странице)
,или если этого недостаточно, то подскажите пожалуйста как это правильно сделать.
Офлайн
https://www.cian.ru/snyat-2-komnatnuyu-kvartiru/
Название (например: С видом на кремль)
Характеристики( например: 2-комн. апартаменты, 116,4 м²) - данный пункт тоже не смог отделить ((((
Метро( н.: Охотный ряд)
Округ(н.: ЦАО)
Район(н.: Тверской)
Улица(н.: Охотный ряд)
Дом(н.: 2)
Цена
Ссылка
Офлайн
import requests from bs4 import BeautifulSoup resp = requests.get(r'https://www.cian.ru/snyat-2-komnatnuyu-kvartiru/') html = resp.text soup = BeautifulSoup(html, 'lxml') block = soup.find('div', {'data-name': 'LinkArea'}) link = block.find('a')['href'] name = block.find('span',{'data-mark': 'OfferTitle'}).text characteristic = block.find('span',{'data-mark': 'OfferSubtitle'}).text address = list(i.text for i in block.find_all('a', {'data-name': 'GeoLabel'})) price = block.find('span',{'data-mark': 'MainPrice'}).text print(name) print(characteristic) print(address) print(price) print(link)
С видом на Кремль 2-комн. апарт., 116,4 м², 7/12 этаж ['Москва', 'ЦАО', 'р-н Тверской', 'м. Охотный ряд', 'улица Охотный Ряд', '2'] 1 750 000 ₽/мес. https://www.cian.ru/rent/flat/262482762/ Process finished with exit code 0
Офлайн
Спасибо, большущее
Офлайн
это по всем на странице
import requests from bs4 import BeautifulSoup resp = requests.get(r'https://www.cian.ru/snyat-2-komnatnuyu-kvartiru/') html = resp.text soup = BeautifulSoup(html, 'lxml') # blocks = soup.find_all('div', {'data-name': 'LinkArea'}) # def get_data_from_block(block): name, characteristic, address, price, link = [None]*5 link = block.find('a')['href'] if block.find('span',{'data-mark': 'OfferTitle'}): name = block.find('span',{'data-mark': 'OfferTitle'}).text if block.find('span',{'data-mark': 'OfferSubtitle'}): characteristic = block.find('span',{'data-mark': 'OfferSubtitle'}).text address = list(i.text for i in block.find_all('a', {'data-name': 'GeoLabel'})) price = block.find('span',{'data-mark': 'MainPrice'}).text return name,characteristic,address,price,link # for b in blocks: print(get_data_from_block(b))
Отредактировано xam1816 (Дек. 5, 2021 20:45:48)
Офлайн