2011-08-29 3 views
1

여기 내 코드가 있습니다. 여러분도 테스트해볼 수 있습니다. 나는 항상 페이지 원본 대신 혼란스런 문자를 얻는다.urllib2를 사용하여 url을 여는 중 왜 엉뚱한 문자가 나옵니까?

Header = {"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 GTB7.1 (.NET CLR 3.5.30729)"} 

Req = urllib2.Request("http://rlslog.net", None, Header) 

Response = urllib2.urlopen(Req) 

Html = Response.read() 

print Html[:1000] 

는 일반적으로 Html 페이지 소스해야하지만, 그것은 엉망 업 문자 t로 끝났다. 왜 그런지 압니까?

은 BTW : 나는 당신은 플라이 압축을 지원하는 사용자 에이전트와 요청을 파이썬 2.7

+0

문제가 저에게 잘 작동합니다. 문제는 다른 곳에서 발생해야합니다. 응답을 출력하는 방식에 어떤 간단한 실수가있을 수 있습니까? – Kapep

+0

@kapep : 정말입니까? 난 그냥 'HTML [: 100]'을 인쇄하면 엉망이됩니다. 어떤 파이썬 버전입니까? – Shane

+0

인쇄 부분이 포함되지 않았기 때문에 그것은 단지 야생 추측이었습니다. 나를 위해 예상대로 작동합니다. 2.6.4 사용하기. – Kapep

답변

1

Bruce가 이미 제안했듯이 압축시 문제가있는 것 같습니다. 서버가 gzip으로 압축 된 내용을 반환하지만 urllib2은 자동 gzip 압축을 지원하지 않습니다. 실제로이 경우 서버는 내가 아는 한 잘못 작동합니다. 즉, Accept-encoding: gzip 헤더가있는 경우에만 콘텐츠를 압축해야합니다 (사용자가 직접 제공하거나 지원하는 경우 클라이언트가 자동으로 추가 함).

그래서 : httplib2과 같은 자동 지원 라이브러리를 사용하거나 (문제의 페이지에서 테스트 한 결과 작동하는) 라이브러리를 사용하거나 압축을 해제하십시오 (응답 방법은 this SO question 참조). 그 질문에 서버가 반환 한 헤더가 내용이 gzip으로 압축되어 있는지 확인합니다.)

+0

고마워요. – Shane

0

에있어. 출력 결과가 gzip으로 압축되지 않았습니까? zlib module 및/또는 인쇄 헤더를 통해 실행하십시오.

관련 문제