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

조회수 2285회

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이었으면 좋겠는데 그렇지 않네요

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

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)