2013-10-20 5 views
1

내 문제에 대한 정보는 herehere으로 보였습니다. 운이 없었습니다.urllib2의 데이터가 Safari의 웹 검사기보다

Safari의 웹 검사기에서와 같이 웹 페이지의 소스를 가져 오는 데 사용되는 파이썬 코드를 만들었습니다. 그러나 저는 애플리케이션과 Safari의 Web Inspector에서 다른 코드를 얻었습니다.

#!/usr/bin/python 

import urllib2 

# headers 

hdr = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.28.10 (KHTML, like Gecko) Version/6.0.3 Safari/536.28.10', 
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
    'Cache-Control': 'max-age=0'} 

# request data 

req = urllib2.Request("https://www.google.com/#q=rainbow&safe=active", headers=hdr) 

# try to get data 
try: 
    page = urllib2.urlopen(req) 
    print page.info() 
except urllib2.HTTPError, e: 
    print e.fp.read() 


content = page.read() 

#print content 

print content 

그리고 헤더는 웹 Inspector에서 무엇을 일치 : 여기 내 코드는 지금까지입니다

Web Inspector


반환 코드는 구글 검색하지만, 다른 "무지개".

내 파이썬 :

http://paste.ubuntu.com/6270549/

웹 관리자 :

http://paste.ubuntu.com/6270606/

지금까지 내가 아는 한, 내 코드는 유비쿼터스 }catch(e){gbar_._DumpException(e)} 라인의 많은 수없는 것으로 보인다 Web Inspector 코드에 있습니다. 또한 Web Inspector 코드에는 235 행이 있지만 내 코드에는 78 행만 있습니다. 내 코드가 자바 스크립트 또는 웹 페이지의 다른 부분을 모두 차지하지 못한다는 의미입니까? 내 코드에서 웹 관리자와 동일한 데이터를 가져 오려면 어떻게해야합니까?

https://www.google.com/search?q=rainbow&safe=active 

대신 : 두 번째 링크는 구글의 홈페이지를하는 경우에 리디렉션의 원인이됩니다

https://www.google.com/#q=rainbow&safe=active 

당신은 구글과 검색 잘못된 링크를 사용하는

+0

반환 된 'content'의 헤더를 제거하고 html 파일에 저장 한 다음 브라우저에서 확인하십시오. – martineau

+0

Python에서 Mozilla를 사용자 에이전트로 사용한다는 점을 고려하면 Safari가 사용하는 것과 동일한 사용자 에이전트입니까? –

+0

@PauloBu 예. 헤더는 Safari Web Inspector에서 그대로 복사됩니다. –

답변

1

올바른 링크가 있어야한다 검색 - Safari에서 사용되지 않을 때 (어떤 이유로) 올바르지 않기 때문에 Python에서 사용되었습니다. 이것이 코드가 다른 이유입니다.