시작시 로그인 양식으로 인증하는 Scrapy 스파이더를 사용하고 있습니다. 그런 다음이 인증 된 세션을 스크랩합니다.Scrap 개발을위한 크롤링간에 인증 된 세션 유지
개발하는 동안 나는 보통 거미를 여러 번 실행하여 테스트합니다. 각 실행의 시작 부분에서 인증하는 것은 웹 사이트의 로그인 양식을 스팸합니다. 웹 사이트는 종종 응답을 위해 비밀번호 재설정을 강요 할 것이며이 경우 계정을 금지 할 것으로 판단됩니다.
쿠키가 몇 시간 동안 지속되므로 개발 중에 자주 로그인해야 할 이유가 없습니다. 암호 재설정 문제를 해결하려면 개발 중에 실행되는 세션간에 쿠키를 다시 사용하는 가장 좋은 방법은 무엇입니까? 이상적으로 스파이더는 지속 세션이 만료 된 경우에만 인증을 시도합니다.
편집 : 목록이있는 '쿠키'탭 아래
def start_requests(self):
yield scrapy.Request(self.base, callback=self.log_in)
def log_in(self, response):
#response.headers includes 'Set-Cookie': 'JSESSIONID=xx'; Path=/cas/; Secure; HttpOnly'
yield scrapy.FormRequest.from_response(response,
formdata={'username': 'xxx',
'password':''},
callback=self.logged_in)
def logged_in(self, response):
#request.headers and subsequent requests all have headers fields 'Cookie': 'JSESSIONID=xxx';
#response.headers has no mention of cookies
#request.cookies is empty
내가 크롬에서 같은 페이지 요청을 실행
~ 20 필드 :내 구조가 같다.
documentation은 여기가 얇게 보입니다. 성공적인 로그인에 의해 반환 된 값을 기반으로 모든 나가는 요청의 머리말에 필드 'Cookie': 'JSESSIONID=xxx'
을 설정하려고 시도했지만 로그인 화면으로 다시 반송됩니다.
당신은 대답 자신이 :
cookieString = request.headers['Cookie']
와 쿠키 문자열을 가져 저장 한 다음 후속 나가는 요청에 그것을로드합니까? –@RafaelAlmeida가 수정 사항을 추가했습니다. 저장해야하는 항목과 다시로드해야하는 항목을 명확히 할 수 있습니까? – Regan