Błąd przy pobieraniu danych ze strony do listy

0

Cześć,
próbuję pobierać dane ze strony (dane typu telefon, email itd). Pobrane dane są zapisywane do list. Problem w tym, że nie wszystkie dane są pełne (np. w ogłoszeniu jednej firmy nie ma podanego nr, telefonu). Chciałbym, żeby w przypadku gdy nie będzie można pobrać numeru telefonu bądź emaila, do listy został zapisywany znak "-". Jest to ważne, ponieważ wszystkie listy muszą mieć taką samą długość abym mógł z nich utworzyć data frame. Próbowałem zrobić to w taki sposób, lecz nie działa :(
''' for item in soup.find_all('a', 'icon-telephone addax addax-cs_hl_phonenumber_click'):
if item.get('title') == False:
telefon.append('-')
else:
telefon.append(item.get('title'))
'''

0

Daj caly kod i po ludzku go sformatuj.

0
import pandas as pd
import numpy as np
from bs4 import BeautifulSoup

telefon=[]
email=[]



load = requests.get('https://panoramafirm.pl/serwis_agd/lubelskie/firmy,1.html')
soup = BeautifulSoup(load.text, 'html.parser')


    
#telefon

for item in soup.find_all('a', 'icon-telephone addax addax-cs_hl_phonenumber_click'):
    if item == False:
        telefon.append('-')
    else:
        telefon.append(item.get('title'))
        
#email   
    
for item in soup.find_all('div', 'item text-primary w-25'):
    email.append(item.get('title'))```
0

Problem jest chyba taki, że funkcja soup.find_all pobiera tylko te numery telefonu i emaile, które uda jej się znaleźć, a te, których brakuje po prostu nie uwzględnia. Jest jakaś szansa żeby zmodyfikować tą funkcję w taki sposób aby pobierało ze strony zarówno te numery tel i maile które są dostępne jak i te których nie ma wpisanych?

1
for item in soup.select("a[class*='icon-telephone']"):
    if "title" in item.attrs:
        telefon.append(item["title"])
    else:
        telefon.append("-")

Tak jak wspomnialem elementy bez tel maja inny selektor. Zamiast tego mozna uzyc metody select gdzie mozemy uzyc CSS przy uzyciu *, czyli wszystkie elementy ktore zawieraja w nazwie swojej klasy konkretna fraze. Zrob analogicznie dla email.

1 użytkowników online, w tym zalogowanych: 0, gości: 1