Moi
Ao. koodi tuntuu kaatuvan seuraavaan kohtaan, jossa tarkistan, että löytyikö tietty HTML-elementti. Ts. jos sen tyyppi ei ole None, niin HTML parsitaan eteenpäin.
Nyt koodi tuntuu toistuvasti kaatuvan tuohon tarkistukseen tai tuohon html.find
#Rivi 54 if html.find('a',attrs={'class':'SearchResult__ProfileLink'})['href'] is not None: page = session.get(URL+html.find('a',attrs={'class':'SearchResult__ProfileLink'})['href']).text else: page = 'not found'
Line 55: TypeError: 'NoneType' object has no attribute '__getitem__'
Yritin lisätä tarkistukset vielä lohkoittain enkä yhdistää and operaattorilla.
Sama ongelma. Käytännössä se tulkitsee, ettei se olekaan None, mutta loputal kuitekin herjaa, ettei Nonella ole tuota getitem attribuuttia.
Virheestä päätellen jo find palauttaa arvon None, jolloin et voi siitä hakea href-arvoa. Sinun pitää hakea tulos muuttujaan ja tarkastaa se ennen hrefin hakemista.
x = html.find('a', attrs={}) if x is not None and href in x and x["href"] is not None: # ...
Metabolix kirjoitti:
Virheestä päätellen jo find palauttaa arvon None, jolloin et voi siitä hakea href-arvoa. Sinun pitää hakea tulos muuttujaan ja tarkastaa se ennen hrefin hakemista.
x = html.find('a', attrs={}) if x is not None and href in x and x["href"] is not None: # ...
Makes sense - täytyy kokeilla
Lisäys: Jep, so far so good eli nyt pelaa, kiitoksia neuvosta :)
Tosta tulee todella rumaa jälkeä ja erittäin epäselvä kun pitää mennä syvemmälle puuhun. Täällä oli selkeämpiä ratkaisuja.
Tietäisitpä vain, että mitä täällä "koodilla" tehdään :D
Itseasiassa tuolle attribuutin kaivamiselle on oma metodi .get(), jota tulisi dokumentaation mukaan käyttää silloin, kun ei ole varma sen olemassaolosta.
Ja täytyy lukaista tuo linkitetty ketju...
Aihe on jo aika vanha, joten et voi enää vastata siihen.