2017-04-08 7 views
1

일부 콘텐츠에 대해 웹 페이지를 긁어 모으기 위해 요청을 사용합니다. 내가파이썬 요청이 브라우저 또는 urllib에서 다른 웹 페이지를 반환합니다.

import requests 
requests.get('example.org') 

을 사용하면 내이 broswer 또는 내가 urllib를 사용하여 시도

import urllib.request 
urllib.request.urlopen('example.org') 

를 사용하여 사용하는 경우
는 내가 얻을 것과 다른 페이지를 얻을하지만 정말 느렸다.
비교 테스트에서 내가 수행 한 작업은 requests보다 50 % 느립니다 !!

어떻게 해결할 수 있습니까 ??

답변

2

많은 조사를 통해 사이트가 사이트의 첫 번째 방문자에게만 첨부 된 헤더에 쿠키를 전달함을 발견했습니다.

그래서 솔루션은 다음 head 요청과 함께 쿠키를 얻을 귀하의 get 요청을 재전송하는 것입니다

import requests 
# get the cookies with head(), this doesn't get the body so it's FAST 
cookies = requests.head('example.com') 
# send get request with the cookies 
result = requests.get('example.com', cookies=cookies) 

지금은 URLLIB + 같은 결과 :

+0

아니면 사용할 수있는 것보다 더 빠른' 세션 '인스턴스. 'CookieJar'로 쿠키를 자동으로 관리합니다. – Dashadower

+0

나는 그것을 시도했지만 내 경우에는 첫 번째 요청만으로 쿠키가 전송되었지만 후속 요청에서 동일한 쿠키를 다시 사용하고 싶지 않았기 때문에 쿠키를 요청에 단순히 전달했습니다. 귀하의 제안은 다른 대부분의 경우에도 유효합니다. –