Найти - Пользователи
Полная версия: Парсинг с одинаковым классом
Начало » Python для новичков » Парсинг с одинаковым классом
1
mutbka63
Добрый день. Хочу спарсить эти данные раздельно, но не могу т.к. они все имеют один и тот же класс. Т.к. они имеют при этом разные href, я могу просто прописать в питоне как дополнительное условие этот href, чтобы разделить. Если да, то будьте любезны)) что нужно дописать в строчку кода например
‘metro’: item.find('a', class_='_93444fe79c–link–3ruIo').get_text()
,или если этого недостаточно, то подскажите пожалуйста как это правильно сделать.
xam1816
mutbka63
,или если этого недостаточно, то подскажите пожалуйста как это правильно сделать.
дай ссылку и какие данные нужно достать(не в html а на реальной странице)
mutbka63
https://www.cian.ru/snyat-2-komnatnuyu-kvartiru/

Название (например: С видом на кремль)
Характеристики( например: 2-комн. апартаменты, 116,4 м²) - данный пункт тоже не смог отделить ((((
Метро( н.: Охотный ряд)
Округ(н.: ЦАО)
Район(н.: Тверской)
Улица(н.: Охотный ряд)
Дом(н.: 2)
Цена
Ссылка
xam1816
 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
mutbka63
Спасибо, большущее
xam1816
это по всем на странице
 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))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB