Уведомления

Группа в Telegram: @pythonsu

#1 Июль 2, 2019 18:26:12

philips2009
Зарегистрирован: 2017-05-09
Сообщения: 45
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема при парсинге данных

Здравствуйте уважаемые форумчане.
Необходимо спарсить данные с ссылкок агенств: адрес, телефон, сайт, facebook, linkedin. Но есть ссылки на агенства на которых отсутствуют некоторые данные как: facebook, linkedin. Решил пойти путем проверки какие данные присутствуют:

 def get_agency_data(url):
    html = get_html(url)
    soup = bs(html, 'lxml')
    name = soup.find('div', class_ = 'homeSearch-title').text.strip()
    # agent profile details
    apd = soup.find('div', class_ = 'container agentProfile-details').find('div', class_ = 'col-xs-12 col-md-8 col-sm-8').find_all('div', class_ = 'row vert-rhythm-lg')
    for div in apd:
        try:
            param_name = div.find('div', class_ = 'col-xs-4 col-md-2 col-sm-3').text
            print(param_name)
            address = ''
            phone = ''
            website = ''
            fb = ''
            linkedin = ''
        except:
            pass
        else:
            if param_name == 'Address':
                address = div.find('div', class_ = 'col-xs-8 col-md-10 col-sm-9').next.strip()
            elif param_name == 'Phone':
                phone = div.find('div', class_ = 'col-xs-8 col-md-10 col-sm-9').find('a').get('data-telephone-number').replace(' ', '')
            elif param_name == 'Website':
                website = div.find('div', class_ = 'col-xs-8 col-md-10 col-sm-9').find('a').get('href')
            elif param_name == 'Facebook':
                fb = div.find('div', class_ = 'col-xs-8 col-md-10 col-sm-9').find('a').get('href')
            elif param_name == 'LinkedIn':
                linkedin = div.find('div', class_ = 'col-xs-8 col-md-10 col-sm-9').find('a').get('href')
        
    print('{}\n{}\n{}\n{}\n{}'.format(address, phone, website, fb, linkedin))

Код вроде работает, print(param_name) - выводит на печать, но сам текст (или то что нужно) - пусто.
Вот результат:
 Address
Phone
Website
Facebook
LinkedIn
[Finished in 5.5s]
Вот как мне нужно (первая ссылка):
 Address: 4/355 Stirling Highway, Claremont WA 6010
Phone: 9385 5559
Website: www.capornyoung.com.au
Facebook: https://www.facebook.com/CapornYoung/
LinkedIn: https://www.linkedin.com/in/caporn-young-estate-agents-256418bb/
(вторая ссылка):
 Address: 1/355 Stirling Highway, Claremont WA 6010
Phone: 9273 4400
Website: www.airey.com.au
Не могу понять почему не выводит то что мне необходимо, помогите решить пожалуйста. Заранее спасибо

Офлайн

#2 Июль 2, 2019 19:46:03

philips2009
Зарегистрирован: 2017-05-09
Сообщения: 45
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема при парсинге данных

Разобрался:

 param_name = div.find('div', class_ = 'col-xs-4 col-md-2 col-sm-3').find('strong').text
добавил find('strong')
Спасибо

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version