2017-01-09 24 views
1

最近、私はScrapyを学んでいます。私はzoominfoをかき集めたいと思います。私はuser_login関数を書いています。しかし、私はデータスクレイピングを達成する検索ページにリダイレクトできませんでした。私はリダイレクトしたいURLがhttp://subscriber.zoominfo.com/zoominfo/scrapy-ユーザーログイン機能を達成した後別のページにリダイレクトする方法

はここに私のコードですです

#!/usr/bin/env python 
# -*- coding:utf-8 -*- 
import scrapy 
from scrapy.selector import Selector 
from scrapy.http import Request, FormRequest 
from tutorial.items import TutorialItem 


class LoginSpider(scrapy.Spider): 
    name = 'zoominfo' 
    login_page = ['https://www.zoominfo.com/login'] 
    start_urls = [ 
    'http://subscriber.zoominfo.com/zoominfo/', 
    ] 
    headers = { 
     "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 
     "Accept-Encoding":"gzip, deflate, br", 
     "Accept-Language":"en-US,en;q=0.5", 
     "Connectionc":"keep-alive", 
     "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:50.0) Gecko/20100101 Firefox/50.0", 
     "Referer":"https://www.zoominfo.com/login/" 
    } 
    def init_request(self): 
     return Request(url=self.login_page, callback=self.login) 

    def login(self, response): 
     print "Preparing Login" 
     return FormRequest.from_response(
      response, 
      headers=self.headers, 
      formdata={ 
      'username':username, 
      'password':password}, 
      callback=self.after_login, 
      dont_filter = True, 
     ) 

    def after_login(self, response): 
     if username in response.body: 
      self.log("Success") 
      self.initialized() 
     else: 
      self.log("Bad times") 

    def parse(self, response): 
     base_url = 'http://subscriber.zoominfo.com/zoominfo/' 
     text = Selector(response) 
     item = TutorialItem() 
     item['title'] = text.xpath('//title/text()').extract() 
     print {'title':item["title"]} 
     request = Request(base_url, callback=self.parse) 

メイン出力は以下の通りです:

2017-01-09 16:52:58 [scrapy.core.engine] INFO: Spider opened 
2017-01-09 16:52:59 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 
2017-01-09 16:52:59 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://subscriber.zoominfo.com/zoominfo/> (referer: None) 
{'title': []} 
2017-01-09 16:52:59 [scrapy.core.engine] INFO: Closing spider (finished) 

出力プリントどちらも「準備ログイン」正しいタイトルを印刷しません。誰かが私にいくつかのヒントを与えることを願っています。本当にありがとうございます

答えて

0

ログで判断するinit_request()は実行されていません。そして、それには理由があります。 init_request()は定期的Spiderクラス、InitSpider classでのみ使用可能ではありません。

from scrapy.spiders.init import InitSpider 

class LoginSpider(InitSpider): 
    # ... 
+0

仲間ねえ、私は「準備ログイン」示す出力、あなたのアプローチを踏襲し、しかし、私は成功し、ログインに失敗しました。あなたが間違っているステップを知っていますか? –

+0

ありがとう、私はそれを得た。 –