...
soup = BeautifulSoup(html, "lxml")
File "/Library/Python/2.7/site-packages/bs4/__init__.py", line 152, in __init__
% ",".join(features))
bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?
Las salidas anteriores en mi terminal. Estoy en Mac OS 10.7.x. Tengo Python 2.7.1 y seguí este tutorial para obtener Beautiful Soup y lxml, que se instalaron correctamente y funcionan con un archivo de prueba separado ubicado aquí . En el script de Python que causa este error, he incluido esta línea:
from pageCrawler import comparePages
Y en el archivo pageCrawler he incluido las siguientes dos líneas:
from bs4 import BeautifulSoup
from urllib2 import urlopen
Se agradecería cualquier ayuda para descubrir cuál es el problema y cómo se puede resolver.
python
python-2.7
beautifulsoup
lxml
usuario3773048
fuente
fuente
html
una url o el contenido html?Respuestas:
Tengo la sospecha de que esto está relacionado con el analizador que BS usará para leer el HTML. El documento está aquí , pero si eres como yo (en OSX) es posible que te quedes atascado con algo que requiere un poco de trabajo:
Notarás que en la página de documentación de BS4 anterior, señalan que, de manera predeterminada, BS4 usará el analizador HTML incorporado de Python. Suponiendo que esté en OSX, la versión de Python incluida en Apple es 2.7.2, que no es indulgente para el formato de caracteres. Llegué a este mismo problema, así que actualicé mi versión de Python para solucionarlo. Hacer esto de manera virtual minimizará la interrupción de otros proyectos.
Si hacer eso suena como un dolor, puede cambiar al analizador LXML:
Y luego intente:
Dependiendo de su escenario, eso podría ser lo suficientemente bueno. Encontré esto lo suficientemente molesto como para garantizar la actualización de mi versión de Python. Con virtualenv, puede migrar sus paquetes con bastante facilidad.
fuente
python -c 'import requests ; from bs4 import BeautifulSoup ; r = requests.get("https://www.allrecipes.com/recipes/96/salad/") ; soup = BeautifulSoup(r.text, "lxml") '
requests
,bs4
ylxml
antesBeautifulSoup
analizaba el contenido de mi página web.Para python básico listo para usar con bs4 instalado, puede procesar su xml con
Sin embargo, si desea utilizar formatter = 'xml' , debe
fuente
pip install html5lib
, después de lo cual todo funcionó bien.bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: html5lib. Do you need to install a parser library?
si lo cambiohtml.parser
, funcionaPreferí el analizador html de python integrado, sin instalación, sin dependencias
soup = BeautifulSoup(s, "html.parser")
fuente
Estoy usando Python 3.6 y tuve el mismo error original en esta publicación. Después de ejecutar el comando:
resolvió mi problema
fuente
apt install python-lxml
Ejecute estos tres comandos para asegurarse de que tiene todos los paquetes relevantes instalados:
Luego reinicie su IDE de Python, si es necesario.
Eso debería encargarse de todo lo relacionado con este tema.
fuente
En lugar de usar lxml, use html.parser, puede usar este fragmento de código:
fuente
vendor.bs.bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: html.parser. Do you need to install a parser library?
Aunque BeautifulSoup admite el analizador HTML de forma predeterminada. Si desea utilizar cualquier otro analizador Python de terceros, debe instalar ese analizador externo como (lxml).
Pero si no especificó ningún analizador como parámetro, recibirá una advertencia de que no se especificó ningún analizador.
Para usar cualquier otro analizador externo, debe instalarlo y luego especificarlo. me gusta
El analizador externo tiene dependencia de python que puede tener alguna ventaja y desventaja.
fuente
Encontré el mismo problema. Encontré que la razón es que tenía un paquete de Python Six ligeramente anticuado.
Actualizar su paquete de seis resolverá el problema:
fuente
sudo pip install six==1.10.0
Instale el analizador LXML en el entorno python.
Su problema será resuelto. También puede usar el paquete python incorporado para lo mismo que:
Nota: El módulo "HTMLParser" ha cambiado de nombre a "html.parser" en Python3
fuente
En algunas referencias, use el segundo en lugar del primero:
fuente
El error se produce debido al analizador que está utilizando. En general, si tiene un archivo / código HTML, entonces debe usarlo
html5lib
(la documentación se puede encontrar aquí ) y en caso de que tenga un archivo / datos XML, entonces debe usarlolxml
(la documentación se puede encontrar aquí ). También puede usar ellxml
archivo / código HTML, pero a veces da un error como el anterior. Por lo tanto, es mejor elegir el paquete sabiamente según el tipo de datos / archivo. También puede usarhtml_parser
cuál es el módulo incorporado. Pero, esto también a veces no funciona.Para obtener más detalles sobre cuándo usar qué paquete, puede ver los detalles aquí
fuente
El parámetro en blanco dará como resultado una advertencia para el mejor disponible.
sopa = BeautifulSoup (html)
--------------- / UserWarning: no se especificó explícitamente ningún analizador, por lo que estoy usando el mejor analizador HTML disponible para este sistema ("html5lib"). Esto generalmente no es un problema, pero si ejecuta este código en otro sistema, o en un entorno virtual diferente, puede usar un analizador diferente y comportarse de manera diferente .--------------- ------- /
python --version Python 3.7.7
PyCharm 19.3.4 CE
fuente