2016-11-06 6 views
0

파이 텍스 3.5.2에서 Factiva의 데이터를 얻으려고합니다. 그리고 데이터를 볼 수 있도록 학교 로그인을 사용해야합니다. 이를 실행하기 위해파이썬 스팸으로 Factiva 데이터를 크롤링하는 방법?

# Test Login Spider 
import scrapy 
from scrapy.selector import HtmlXPathSelector 
from scrapy.http import Request 


login_url = "https://login.proxy.lib.sfu.ca/login?qurl=https%3a%2f%2fglobal.factiva.com%2fen%2fsess%2flogin.asp%3fXSID%3dS002sbj1svr2sVo5DEs5DEpOTAvNDAoODZyMHn0YqYvMq382rbRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQAA" 
user_name = b"[my_user_name]" 
pswd = b"[my_password]" 
response_page = "https://global-factiva-com.proxy.lib.sfu.ca/hp/printsavews.aspx?pp=Save&hc=All" 


class MySpider(scrapy.Spider): 
    name = 'myspider' 

    def start_requests(self): 
     return [scrapy.FormRequest(login_url, 
           formdata={'user': user_name, 'pass': pswd}, 
           callback=self.logged_in)] 

    def logged_in(self, response): 
     # login failed 
     if "authentication failed" in response.body: 
      print ("Login failed") 
     # login succeeded 
     else: 
      print ('login succeeded') 
      # return Request(url=response_page, 
      #  callback=self.parse_responsepage) 

    def parse_responsepage(self, response): 
     hxs = HtmlXPathSelector(response) 
     yum = hxs.select('//span/@enHeadline') 


def main(): 
    test_spider = MySpider(scrapy.Spider) 
    test_spider.start_requests() 

if __name__ == "__main__": 
    main() 

: 이것은 내 코드 error

입니다 : 내가 그러나 login spider

을 만들려고하는이 게시물을 따랐다

,이 오류있어 코드, 프로젝트의 최상위 디렉토리에 터미널 커맨드 라인을 사용했습니다 :

scrapy runspider [my_file_path]/auth_spider.py 

여기에서 오류를 처리하는 방법을 알고 있습니까?

답변

2

파이썬 3.x를 사용할 때 "authentication failed"str이고 response.bodybytes입니다.

이 문제를 해결하려면 str에서 테스트를 수행하려면 다음을 수행

if "authentication failed" in response.body_as_unicode(): 

또는 bytes에 :

if b"authentication failed" in response.body: 
+0

오 세상에, 그것은 로그인 성공을 보여줍니다. 나는이 문제를 해결할 수 없다고 생각했다. ... 대단히 감사합니다 !! –

관련 문제