web-dev-qa-db-fra.com

Comment se débarrasser de l'alerte utilisateur de BeautifulSoup?

Après avoir installé BeautifulSoup, chaque fois que j'exécute mon Python dans cmd, cet avertissement apparaît.

D:\Application\python\lib\site-packages\beautifulsoup4-4.4.1-py3.4.Egg\bs4\__init__.py:166:
UserWarning: No parser was explicitly specified, so I'm using the best
available HTML parser for this system ("html.parser"). This usually isn't a
problem, but if you run this code on another system, or in a different
virtual environment, it may use a different parser and behave differently.

To get rid of this warning, change this:

 BeautifulSoup([your markup])

to this:

 BeautifulSoup([your markup], "html.parser")

Je n'ai pas d'idéal pourquoi il sort et comment le résoudre.

39
jellyfishhuang

La solution à votre problème est clairement indiquée dans le message d'erreur. Un code comme ci-dessous ne spécifie pas un XML/HTML/etc. analyseur.

BeautifulSoup( ... )

Afin de corriger l'erreur, vous devez spécifier quel analyseur vous souhaitez utiliser, comme ceci:

BeautifulSoup( ..., "html.parser" )

Vous pouvez également installer un analyseur tiers si vous le souhaitez.

76
Ethan Bierlein

La documentation vous recommande d'installer et d'utiliser lxml pour plus de rapidité.

BeautifulSoup(html, "lxml")

Si vous utilisez une version de Python 2 antérieure à 2.7.3, ou une version de Python 3 antérieure à 3.2.2, il est essentiel que vous installer lxml ou html5lib: l'analyseur HTML intégré de Python n'est tout simplement pas très performant dans les versions précédentes.

Installation de l'analyseur LXML

  • Sur Ubuntu (debian)

    apt-get install python-lxml 
    
  • Fedora (basé sur RHEL)

    dnf install python-lxml
    
  • Utiliser PIP

    pip install lxml
    
13
Gayan Weerakutti

Pour l'analyseur HTML, vous devez installer html5lib, exécuter:

pip install html5lib

ajoutez ensuite html5lib dans la méthode BeautifulSoup:

htmlDoc = bs4.BeautifulSoup(req1.text, 'html5lib')
print(htmlDoc)
3
Wilson Wu