python urllib2 urlopen phản ứng:python urllib2 urlopen phản ứng
<addinfourl at 1081306700 whose fp = <socket._fileobject object at 0x4073192c>>
mong đợi:
{ "token": "mYWmzpunvasAT795niiR"}
python urllib2 urlopen phản ứng:python urllib2 urlopen phản ứng
<addinfourl at 1081306700 whose fp = <socket._fileobject object at 0x4073192c>>
mong đợi:
{ "token": "mYWmzpunvasAT795niiR"}
Bạn cần phải ràng buộc đối tượng giống như tệp kết quả với một biến, o therwise người phiên dịch chỉ bãi nó qua repr
:
>>> import urllib2
>>> urllib2.urlopen('http://www.google.com')
<addinfourl at 18362520 whose fp = <socket._fileobject object at 0x106b250>>
>>>
>>> f = urllib2.urlopen('http://www.google.com')
>>> f
<addinfourl at 18635448 whose fp = <socket._fileobject object at 0x106b950>>
Để có được các dữ liệu thực tế mà bạn cần phải thực hiện một read()
.
>>> data = f.read()
>>> data[:50]
'<!doctype html><html itemscope="itemscope" itemtyp'
Để xem các tiêu đề trở lại:
>>> print f.headers
Date: Thu, 23 Aug 2012 00:46:22 GMT
Expires: -1
Cache-Control: private, max-age=0
... etc ...
Thêm dòng sau sau khi cuộc gọi của bạn để urlopen
print feed.read()
Có lẽ bạn sẽ tìm thấy bằng cách sử dụng requests
library trực quan hơn để sử dụng hơn urllib2
.
Cuộc gọi tốt, cảm ơn! –
Tôi có một câu hỏi ở đây. Nếu tôi không lưu trữ nội dung của 'f' thành' dữ liệu', và chỉ cần thực hiện 'f.read()', tôi chỉ nhận được nội dung một lần. Nếu tôi làm 'f.read()' một lần nữa, nó sẽ in ra một chuỗi rỗng. Tại sao vậy? –
@SidharthSamant: vì bạn đã tiêu thụ tất cả dữ liệu từ luồng - nó không được lưu trữ nội bộ bởi 'urllib2'. – mhawke