2010-01-07 32 views

Trả lời

42

Sử dụng urllib.request có lẽ là cách dễ nhất để làm điều này:

import urllib.request 
f = urllib.request.urlopen("http://stackoverflow.com") 
print(f.read()) 
+0

Đã thử và tôi đã nhận được đối tượng "AttributeError: 'module' không có thuộc tính 'urlopen'" – BiscottiGummyBears

+1

Thực ra, mô-đun chính xác để nhập là urllib2. –

+1

Xin lỗi, tôi vừa nhận thấy rằng bạn đang sử dụng Python 3. Tôi đã cập nhật ví dụ của mình để khớp. –

0

Thêm mã này có thể định dạng dữ liệu cho việc đọc của con người:

text = f.read().decode('utf-8') 
2

Bạn cũng có thể sử dụng thư viện yêu cầu. Tôi thấy điều này đặc biệt hữu ích vì nó dễ dàng hơn để truy xuất và hiển thị tiêu đề HTTP.

import requests 

source = 'http://www.pythonlearn.com/code/intro-short.txt' 

r = requests.get(source) 

print('Display actual page\n') 
for line in r: 
    print (line.strip()) 

print('\nDisplay all headers\n') 
print(r.headers) 
+0

Đây có phải là Python 3 không? –

+0

Điều này có hiệu quả với Python 3 không? –

2

Cách sử dụng built-in module "http.client"

import http.client 

connection = http.client.HTTPSConnection("api.bitbucket.org", timeout=2) 
connection.request('GET', '/2.0/repositories') 
response = connection.getresponse() 
print('{} {} - a response on a GET request by using "http.client"'.format(response.status, response.reason)) 
content = response.read().decode('utf-8') 
print(content[:100], '...') 

Kết quả:

200 OK - a response on a GET request by using "http.client" {"pagelen": 10, "values": [{"scm": "hg", "website": "", "has_wiki": true, "name": "tweakmsg", "links ...

Cách sử dụng thư viện của bên thứ ba "yêu cầu"

response = requests.get("https://api.bitbucket.org/2.0/repositories") 
print('{} {} - a response on a GET request by using "requests"'.format(response.status_code, response.reason)) 
content = response.content.decode('utf-8') 
print(content[:100], '...') 

Kết quả:

200 OK - a response on a GET request by using "http.client" {"pagelen": 10, "values": [{"scm": "hg", "website": "", "has_wiki": true, "name": "tweakmsg", "links ...

Cách sử dụng built-in module "urllib.request"

response = urllib.request.urlopen("https://api.bitbucket.org/2.0/repositories") 
print('{} {} - a response on a GET request by using "urllib.request"'.format(response.status, response.reason)) 
content = response.read().decode('utf-8') 
print(content[:100], '...') 

Kết quả:

200 OK - a response on a GET request by using "http.client" {"pagelen": 10, "values": [{"scm": "hg", "website": "", "has_wiki": true, "name": "tweakmsg", "links ...

Ghi chú:

  1. Python 3.4
  2. Kết quả từ các câu trả lời rất có thể sẽ được chỉ khác nhau nội dung
0

https://stackoverflow.com/a/41862742/8501970 Kiểm tra này ra để thay thế. Của nó về cùng một vấn đề bạn có và điều này là rất đơn giản và rất ít dòng mã. Điều này chắc chắn đã giúp tôi khi tôi nhận ra python3 không thể sử dụng chỉ đơn giản là get_page.

Đây là giải pháp thay thế tốt. (hy vọng điều này sẽ giúp, chúc mừng!)