2016-04-09 18 views
21

Tôi muốn viết một mã như trước đây ... như thế này:những gì tôi nên sử dụng thay vì urlopen trong urllib3

from bs4 import BeautifulSoup 
import urllib2 

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

Nhưng tôi thấy tôi phải cài đặt urllib3 bây giờ.

Nhưng coudntfind bất kỳ hướng dẫn hoặc ví dụ nào để hiểu cách viết lại mã ở trên, ví dụ: urllib3 không có urlopen.

Bất kỳ lời giải thích hoặc ví dụ nào xin vui lòng ?!

Tôi đang sử dụng trăn 3.4.

+1

tại sao bạn phải cài đặt urllib3 khi ví dụ hoạt động? – Deusdeorum

+1

Vì nó không hoạt động đối với tôi, không tìm thấy urllib2. – niloofar

+1

@niloofar Python 3.4 có urllib2 có tên là urllib. 'from urllib import urlopen' sẽ hoạt động cho trường hợp này. –

Trả lời

6

Bạn không phải cài đặt urllib3. Bạn có thể chọn bất kỳ thư viện yêu cầu HTTP nào phù hợp với nhu cầu của bạn và cung cấp phản hồi cho BeautifulSoup. Sự lựa chọn là mặc dù thường là requests vì bộ tính năng phong phú và API tiện lợi. Bạn có thể cài đặt requests bằng cách nhập pip install requests vào dòng lệnh. Dưới đây là ví dụ cơ bản:

from bs4 import BeautifulSoup 
import requests 

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

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

FWIW, bạn vẫn cần phải yêu cầu _install_ nếu bạn muốn sử dụng yêu cầu. Không ai trong số họ đến bản địa với Python. – shazow

17

urllib3 là một thư viện khác từ urllib và urllib2. Nó có rất nhiều tính năng bổ sung cho các thư mục con trong thư viện chuẩn, nếu bạn cần chúng, những thứ như sử dụng lại các kết nối. Tài liệu ở đây: https://urllib3.readthedocs.org/

Nếu bạn muốn sử dụng urllib3, bạn cần phải pip install urllib3. Một ví dụ cơ bản trông như thế này:

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()' không hoạt động ít nhất trong Python 2.7. Theo tài liệu https://urllib3.readthedocs.io/en/latest/user-guide.html, nó phải là 'html = response.data'. – RajeshM

+0

Cảm ơn, tôi đã cập nhật nó. – shazow

2

Các urllib3 thư viện mới có một tài liệu đẹp here
Để có được kết quả mong muốn của bạn bạn shuld theo rằng:

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

Các "giải mã utf -8 "một phần là tùy chọn. Nó làm việc mà không có nó khi tôi đã cố gắng, nhưng tôi đã đăng tùy chọn anyway.
Nguồn: User Guide

Các vấn đề liên quan