2016-04-09 9 views
21

Ich wollte wie vor um einen Code schreiben ... wie folgt aus:was soll ich statt urlopen in urllib3 verwenden

from bs4 import BeautifulSoup 
import urllib2 

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

Aber ich fand ich jetzt installieren urllib3 haben.

Aber finden Sie keine Anleitung oder ein Beispiel, um zu verstehen, wie oben genannten Code umgeschrieben wird, zum Beispiel hat urllib3 nicht urlopen.

Irgendeine Erklärung oder ein Beispiel bitte ?!

Ich benutze Python 3.4.

+1

Warum müssen Sie urllib3 installieren, wenn das Beispiel funktioniert? – Deusdeorum

+1

Weil es bei mir nicht funktioniert, findet sich kein urllib2. – niloofar

+1

@niliofar Python 3.4 hat urllib2 als urllib. 'from urllib import urlopen' sollte für diesen Fall funktionieren. –

Antwort

6

Sie müssen urllib3 nicht installieren. Sie können eine beliebige HTTP-Request-making-Bibliothek auswählen, die Ihren Anforderungen entspricht, und die Antwort an BeautifulSoup senden. Die Wahl ist obwohl normalerweise requests wegen der reichen Eigenschaft und der bequemen API. Sie können requests installieren, indem Sie in der Befehlszeile pip install requests eingeben. Hier ein einfaches Beispiel:

from bs4 import BeautifulSoup 
import requests 

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

soup = BeautifulSoup(response.content, "html.parser") 
+0

FWIW, Sie müssen noch _install_ Anfragen, wenn Sie Anfragen verwenden möchten. Keiner von ihnen kommt ursprünglich mit Python. – shazow

17

urllib3 ist eine andere Bibliothek von urllib und urllib2. Es hat viele zusätzliche Funktionen zu den urllibs in der Standardbibliothek, wenn Sie sie benötigen, Dinge wie die Wiederverwendung von Verbindungen. Die Dokumentation befindet sich hier: https://urllib3.readthedocs.org/

Wenn Sie urllib3 verwenden möchten, müssen Sie pip install urllib3. Ein einfaches Beispiel sieht wie folgt aus:

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) 
+0

'response.read()' funktioniert zumindest in Python 2.7 nicht. Laut der Dokumentation https://urllib3.readthedocs.io/en/latest/user-guide.html sollte es 'html = response.data' sein. – RajeshM

+0

Danke, ich habe es aktualisiert. – shazow

2

Die neue urllib3 Bibliothek hat eine schöne Dokumentation here
Um das gewünschte Ergebnis bekommen Sie shuld dass folgen:

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')) 

Die „decode utf -8 "Teil ist optional. Es funktionierte ohne es, als ich es versuchte, aber ich postete die Option trotzdem.
Quelle: User Guide

Verwandte Themen