[PYTHON] urllib2 전체 HTTP 응답을 검색하지 못함
PYTHONurllib2 전체 HTTP 응답을 검색하지 못함
urllib2를 사용하여 FriendFeed에서 일부 JSON 응답의 전체 내용을 다운로드 할 수없는 이유에 대해 당황 스럽다.
>>> import urllib2
>>> stream = urllib2.urlopen('http://friendfeed.com/api/room/the-life-scientists/profile?format=json')
>>> stream.headers['content-length']
'168928'
>>> data = stream.read()
>>> len(data)
61058
>>> # We can see here that I did not retrieve the full JSON
... # given that the stream doesn't end with a closing }
...
>>> data[-40:]
'ce2-003048343a40","name":"Vincent Racani'
urllib2로 전체 응답을 검색하려면 어떻게해야합니까?
해결법
-
==============================
1.모든 데이터를 얻는 가장 좋은 방법은 다음과 같습니다.
모든 데이터를 얻는 가장 좋은 방법은 다음과 같습니다.
fp = urllib2.urlopen("http://www.example.com/index.cfm") response = "" while 1: data = fp.read() if not data: # This might need to be if data == "": -- can't remember break response += data print response
그 이유는 .read ()가 소켓의 특성을 고려하여 전체 응답을 반환한다고 보장 할 수 없기 때문입니다. 나는 이것이 문서 (아마 urllib)에서 논의되었다고 생각했지만 그것을 발견 할 수 없다.
-
==============================
2.실제 네트워크 상호 작용을 모니터링하려면 tcpdump (또는 이와 비슷한 기능)를 사용하십시오. 그런 다음 일부 클라이언트 라이브러리의 사이트가 손상된 이유를 분석 할 수 있습니다. 테스트를 스크립팅하여 여러 번 반복하여 문제가 일관성이 있는지 확인할 수 있습니다.
실제 네트워크 상호 작용을 모니터링하려면 tcpdump (또는 이와 비슷한 기능)를 사용하십시오. 그런 다음 일부 클라이언트 라이브러리의 사이트가 손상된 이유를 분석 할 수 있습니다. 테스트를 스크립팅하여 여러 번 반복하여 문제가 일관성이 있는지 확인할 수 있습니다.
import urllib2 url = 'http://friendfeed.com/api/room/friendfeed-feedback/profile?format=json' stream = urllib2.urlopen(url) expected = int(stream.headers['content-length']) data = stream.read() datalen = len(data) print expected, datalen, expected == datalen
이 사이트는 일관되게 나를 위해 일하므로 실패 사례를 찾을 수는 없습니다. :)
-
==============================
3.완료 될 때까지 stream.read () 호출 유지 ...
완료 될 때까지 stream.read () 호출 유지 ...
while data = stream.read() : ... do stuff with data
-
==============================
4.
readlines()
또한 일한다.
from https://stackoverflow.com/questions/1824069/urllib2-not-retrieving-entire-http-response by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 사용중인 NumPy의 버전을 확인하려면 어떻게합니까? (0) | 2018.11.17 |
---|---|
[PYTHON] 일반 인수 대 키워드 인수 (0) | 2018.11.17 |
[PYTHON] 파이썬 예외 / 오류 계층 구조 인쇄 (0) | 2018.11.17 |
[PYTHON] numpy에서 인접하지 않은 범위를 여러 개 색인으로 만듭니다. (0) | 2018.11.17 |
[PYTHON] 파이썬 : 한 사전이 다른 큰 사전의 하위 집합인지 확인하십시오 (0) | 2018.11.16 |