estoy usando el módulo BeautifulSoup para seleccionar todo href de html de esta manera:módulo de Python BeautifulSoup anclas extracción 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
pero en algún momento se fallido de este mensaje de error:
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'
Gracias, pero ahora IR devolver este mensaje de error: Rastreo (llamada más reciente pasado): archivo "C: \ py \ principal .py ", línea 34, en urls = extract_links (página) Archivo" C: \ py \ main.py ", línea 11, en extract_links si 'href' en a.keys(): TypeError: ' NoneType 'object no se puede llamar –
Michal
@micheal Está colocando etiquetas 'a' en su diccionario que no tienen atributos' href'. En lugar de pedirle al diccionario que arroje etiquetas que pueden o no dar un atributo 'href', pregúntele a los datos si lo hace * antes * de ponerlo en el diccionario. – Droogans
Creo que el nuevo error se debe a que un nodo BeautifulSoup no es un diccionario, por lo que 'keys' no es lo que esperas. –