웹사이트 로그인 시 URL이 몇 차례 바뀌는 경우 어떻게 scrapy로 세션을 얻을 수 있나요?


python과 scrapy를 처음 따라해 보는 초보자입니다.

제가 원하는 정보를 가져오기 위해서 로그인을 시도하면

로그인 page -> 로그인 확인 URL1 -> 로그인 확인 URL2 -> 원하는 페이지

이런식으로 URL이 몇 차례 바뀐 후 로그인이 됩니다.

Spider의 코드는 아래와 같습니다.

from scrapy.spider import BaseSpider
from scrapy.contrib.spiders import Rule
from scrapy.contrib.spiders.init import InitSpider
from scrapy.http import Request, FormRequest

class gradeSpider(InitSpider):
name = "grade"
allowed_domains = ["example.com"]
login_page = "https://www.example.com/login/myweb.jsp?RSP=www.example.com&RelayState=index_SSO.jsp"
start_urls = "https://www.example.com/main/dataList"

def init_request(self):
    return Request(url=self.login_page, callback=self.login)


def login(self, response):
    return FormRequest.from_response(response, formdata={'userID':'myid', 'userPW':'mypw'}, callback=self.check_login_response)

def check_login_response(self, response):

    print "+"*50
    print "current URL: " + response.url
    print "+"*50

    #check login success
    if success
        return self.initialized();
    else
        return self.error();

def initialized(self):
    return Request(url=self.start_urls, callback=self.parse_item)

def parse_item(self, response):
    #doing parse
    print "Success login ready to parse."

현재 위와 같이 테스트 코드를 작성 하였고, 로그인이 성공하여 크롤링 할 start_url 로 가는지 확인하기 위해 current URL을 출력합니다.

위 코드를 실행하면

2016-09-20 08:59:22 [scrapy] INFO: Spider opened
2016-09-20 08:59:22 [scrapy] INFO: Crawled 0 pages (at 0 pages/min),
scraped 0 items (at 0 items/min)
2016-09-20 08:59:22 [scrapy] DEBUG: Telnet console listening on 127.0.0.1:6023
2016-09-20 08:59:22 [scrapy] DEBUG: Crawled (404) GET https://www.example.com/robots.txt (referer: None)
2016-09-20 08:59:22 [scrapy] DEBUG: Crawled (200)  GET https://www.example.com/login/myweb.jsp?RSP=www.example.com&RelayState=index_SSO.jsp (referer: None)
2016-09-20 08:59:23 [scrapy] DEBUG: Crawled (200)  POST https://www.example.com/login/loginCheck.jsp (referer: https://www.example.com/login/myweb.jsp?RSP=www.example.com&RelayState=index_SSO.jsp)
+++++++++++++++++++++++++++++++++++++++++++++++++
current URL: https://www.example.com/login/loginCheck.jsp
// currunt URL이 start_url 이 되길 바람 ... ( 현재는  로그인 확인 URL1 에 멈춰있음)
+++++++++++++++++++++++++++++++++++++++++++++++++
2016-09-20 08:59:23 [scrapy] INFO: Closing spider (finished)

다음과 같이 나옵니다.

주석에 있듯 current URL이 제가 크롤링 할 start_url이었으면 좋겠는데 그렇지 않네요

어떻게 해야 할까요? 읽어주셔서 감사합니다.


조회수 484


Banner summercoding 2x copy mjjdfw

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close