używam moduł BeautifulSoup aby zaznaczyć cały href z HTML w ten sposób:Python moduł BeautifulSoup wydobywające kotwice href
def extract_links(html):
soup = BeautifulSoup(html)
anchors = soup.findAll('a')
print anchors
links = []
for a in anchors:
links.append(a['href'])
return links
ale kiedyś nie udało przez ten komunikat o błędzie:
Traceback (most recent call last):
File "C:\py\main.py", line 33, in <module>
urls = extract_links(page)
File "C:\py\main.py", line 11, in extract_links
links.append(a['href'])
File "C:\py\BeautifulSoup.py", line 601, in __getitem__
return self._getAttrMap()[key]
KeyError: 'href'
Dzięki, ale teraz IR zwrócić ten komunikat o błędzie: Traceback (najnowsza wezwanie ostatni): pliku „C: \ py \ main .py ", linia 34, w urls = extract_links (strona) Plik" C: \ py \ main.py ", wiersz 11, w linkach do wyciągów jeśli" href "w a.keys(): TypeError: ' Obiekt NoneType nie jest dostępny na żądanie. –
Michal
@micheal Umieszczasz znaczniki 'a' w słowniku, które nie mają atrybutów' href'. Zamiast żądać od słownika kasowania znaczników, które mogą, ale nie muszą dawać atrybutu 'href', zapytaj danych, czy to * przed * umieszczeniem ich w słowniku. – Droogans
Myślę, że nowym błędem jest to, że węzeł BeautifulSoup nie jest słownikiem, więc 'keys' nie jest tym, czego oczekujesz. –