Cześć, siedzę już od 2 godzin nad poniższym kodem i nie wiem co jest nie tak. Otóż próbuję przeprowadzi webscraping, strony otodom.pl, który wyszukuje informację o mieszkaniach itp. Kod wywala błąd który brzmi następująco**:'NoneType' object has no attribute 'text'**.
- Próbowałem zamiast 'lxml' zmienić na 'html-parser'= bez zmian,
- Próbowałem dodać lstrip, bo w niektórych zmiennych jak np cena jest oznaczenie 'zł ', zaś w powierzchnia jest oznaczenie 'm2' = bez zmian
- Próbowałem usunąć .text, i zmienne się wczytują ale z wartością 'None'
Chcę jeszcze nadmienić iż class_= dla wszystkich zmiennych opisanych powyżej wygląda identycznie na każdej stronie. Dla pojedynczych zmiennych printuje się dobrze z funkcją text.strip()
Mój kod:
import requests
from bs4 import BeautifulSoup
import pandas as pd
baseurl='https://www.otodom.pl/sprzedaz/mieszkanie/'
headers={
'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36'
}
houselinks=[]
for x in range(10,12):
r=requests.get(f'https://www.otodom.pl/sprzedaz/mieszkanie/?page={x}')
soup=BeautifulSoup(r.content, 'lxml')
houselist=soup.find_all('div',class_='col-md-content section-listing__row-content')
for item in houselist:
for link in item.find_all('a', href=True):
houselinks.append(baseurl+ link['href'])
#testlink = 'https://www.otodom.pl/pl/oferta/uroczysko-mieszkanie-53-09m2-2-pokoje-z-ogrodem-ID48Nos.html#ab04badaa0'
houselist=[]
for link in houselinks:
r=requests.get(link,headers=headers)
soup=BeautifulSoup(r.content, 'lxml')
name=soup.find('h1', class_='css-11t1qm5').text.strip()
cena=soup.find('strong',class_='css-1mojccp').text.strip()
perMetr=soup.find('div',class_='css-4ak5ev').text.strip()
powierzchnia=soup.find('div', class_='css-1s5nyln').text.strip()
adres=soup.find('a',class_='css-1rg0v62').text.strip()
rooms={
'name':name,
'cena':cena,
'perMetr':perMetr,
'powierzchnia':powierzchnia,
'adres':adres
}
print(rooms)