웹사이트 로그인 시 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이었으면 좋겠는데 그렇지 않네요
어떻게 해야 할까요? 읽어주셔서 감사합니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력