2017-05-31 19 views
0

ウェブサイトには非表示の認証トークンがありますが、docsはデフォルトの設定を上書きする必要はなく、ユーザー名とパスワードのみを渡す必要があると考えられます。詐欺的なログインの失敗

[ネットワーク]タブを見ると、認証トークンを送信するだけでなく、多数のCookieがあることに気付きます。私はそこに何かをしなければならないかどうかはわかりません。様々な他の人の以前の試みから石畳

私のコード、:Networkタブで探し

The website does have a hidden authentication token, but the [docs][1] seem to suggest I don't need to override the default here, and only need to pass the username and password. 

、私は、認証トークンを掲示することに加えて、数多くのクッキーもあることがわかります。私はそこに何かをしなければならないかどうかはわかりません。様々な他の人の以前の試みから石畳

私のコード、:

import scrapy 
from scrapy.selector import Selector 
from scrapy import Spider 
from scrapy.contrib.spiders.init import InitSpider 
from scrapy.spider import BaseSpider 
from scrapy.http import Request, FormRequest 
from scrapy import log 
from scrapy.crawler import CrawlerProcess 

from dealinfo.items import DealinfoItem 

class DealinfoSpider(scrapy.Spider): 
    name = 'dealinfo' 
    allowed_domains = ['dealinfo.com'] 
    #login_page = 'https://dealinfo.com/users/sign_in' 
    start_urls = 'https://dealinfo.com/organizations/xxxx/member_landing' 

    def start_requests(self): 
     return [Request(url='https://dealinfo.com/users/sign_in', callback=self.login)] 

    def login(self, response): 
     return FormRequest(
          'https://dealinfo.com/users/sign_in', 
          formdata={ 
            'user[email]':'xxxxx', 
            'user[password]':'xxxxx' 
          }, 
          callback=self.after_login) 

    def after_login(self, response): 
     if "authentication failed": 
      self.log("Login failed", level=log.ERROR) 
      return 

     self.log('Login Successful. Parsing all other URLs') 
     for url in self.start_urls: 
      yield self.make_requests_from_url(url) 

    def parse(self, response): 
     deal_list = Selector(response).xpath('//table[@id="deal_list"]/tbody[@class="deal-list__row"]/tr[@class="deal"]') 

     for deal_row in deal_list: 
      item = DealinfoItem() 
      item['capital_seeking'] = deal_row.xpath('td[2]/text()').extract() 
      yield item` 
+0

FormRequest.from_response()を試してください – Verz1Lka

答えて

1

あなたのログイン要求でいくつかのFORMDATAが欠落しています

formdata

あなたはのページのソースにauthenticity_tokenを見つけることができますログインページ:

token

+0

これは問題ではないようです...私は真偽トークンを渡そうとしました。とscrapy docsは、ユーザーとパスワード以外のものを無効にする必要はないと言っています。 –

+0

私はそれが必要と思う。特に、認証トークンが外部で作成されている場合とにかくそれを試してみてください、うまくいくかもしれません。とにかく試してみる価値がある。 –

関連する問題