web-dev-qa-db-fra.com

Que devrais-je utiliser pour ouvrir une URL au lieu de urlopen dans urllib3

Je voulais écrire un morceau de code comme suit:

from bs4 import BeautifulSoup
import urllib2

url = 'http://www.thefamouspeople.com/singers.php'
html = urllib2.urlopen(url)
soup = BeautifulSoup(html)

Mais j’ai trouvé que je devais installer le paquet urllib3 maintenant.

De plus, je n'ai trouvé aucun tutoriel ou exemple pour comprendre comment réécrire le code ci-dessus, par exemple, urllib3 n'a pas urlopen.

Une explication ou un exemple, s'il vous plaît?!

P/S: J'utilise python 3.4.

44
niloofar

urllib3 est une bibliothèque différente d'urllib et urllib2. Il y a beaucoup de fonctionnalités supplémentaires aux urllibs dans la bibliothèque standard, si vous en avez besoin, des choses telles que la réutilisation de connexions. La documentation est ici: https://urllib3.readthedocs.org/

Si vous souhaitez utiliser urllib3, vous devez utiliser pip install urllib3. Un exemple de base ressemble à ceci:

from bs4 import BeautifulSoup
import urllib3

http = urllib3.PoolManager()

url = 'http://www.thefamouspeople.com/singers.php'
response = http.request('GET', url)
soup = BeautifulSoup(response.data)
44
shazow

Vous n'avez pas besoin d'installer urllib3. Vous pouvez choisir n'importe quelle bibliothèque faisant une demande HTTP qui répond à vos besoins et alimenter la réponse en BeautifulSoup. Le choix est cependant habituel requests en raison de la richesse des fonctionnalités et de l’API pratique. Vous pouvez installer requests en entrant pip install requests dans la ligne de commande. Voici un exemple de base:

from bs4 import BeautifulSoup
import requests

url = "url"
response = requests.get(url)

soup = BeautifulSoup(response.content, "html.parser")
29
alecxe

La nouvelle bibliothèque urllib3 possède une documentation Nice ici
Pour obtenir le résultat souhaité, vous devez suivre les étapes suivantes:

Import urllib3
from bs4 import BeautifulSoup

url = 'http://www.thefamouspeople.com/singers.php'

http = urllib3.PoolManager()
response = http.request('GET', url)
soup = BeautifulSoup(response.data.decode('utf-8'))

La partie "decode utf-8" est optionnelle. Cela a fonctionné sans quand j'ai essayé, mais j'ai quand même posté l'option.
Source: Guide de l'utilisateur

7
Lan Vukušič