Не могу разобрать долготу и широту BeautifulSoup - PullRequest
0 голосов
/ 17 марта 2020

Если я использую это

 'latitude': item.find('div', class_='data-shop-latitude').get_text(),
 'longitude': item.find('div', class_='data-shop-longitude').get_text(),

Я получаю

AttributeError: у объекта 'NoneType' нет атрибута 'get_text'

Если я использую это

'latitude': item.find('div', class_='data-shop-latitude'),
'longitude': item.find('div', class_='data-shop-longitude'),

Я получу

'широта': нет, 'долгота': нет,

Как я могу получить это:

'широта': 52.42065, 'долгота': 37.59659,

1 Ответ

1 голос
/ 17 марта 2020

find принимает kwarg под названием attrs, который вы должны использовать.

Как только вы получите магазины с soup.find_all('div', attrs={'class':'shop-list-item'}), все, что вам нужно сделать, это получить значение различных атрибутов, которые вы Вы заинтересованы в использовании метода get для элемента div (тип которого bs4.element.Tag:

import requests
from bs4 import BeautifulSoup

r = requests.get(r'https://www.mebelshara.ru/contacts')

soup = BeautifulSoup(r.text, 'html.parser')

shops = soup.find_all('div', attrs={'class':'shop-list-item'})
for shop in shops:
    print(shop.get('data-shop-name'))
    print(shop.get('data-shop-latitude'))
    print(shop.get('data-shop-longitude'))
    print()

Выход:

ТЦ Европа
50.59084
36.59734

ТЦ Атлас
50.58516
36.565457

ТЦ РИО
50.64208
36.572086

[...]
...