2017-12-19 13 views
0

AliceWeb2から情報を取得しようとしています。これを行うには、ログインする必要がありますが、できません。私は、以下に示すように、リクエストメソッド:POSTを持つページのために、Google Chromeのinspectツールにユーザ、パス、検索を配置します。FormRequestログイン時に問題が発生する

Network Toolだから、

、次のコードを使用して:すべての Scrapy CMD's bug

+0

、それは作品 – parik

答えて

0

まず、代わりにreturn

yieldを使用して、要求を模倣しようとしている時はいつでも:

from scrapy.item import Item, Field 
from scrapy.http import FormRequest 
from scrapy.spider import Spider 
from scrapy.utils.response import open_in_browser 
from scrapy import Request 


class AliceWeb2(Spider): 
    name = "login" 

    # Start on the welcome page 
    def start_requests(self): 
     return [Request(
       "http://aliceweb.mdic.gov.br//usuario/login/", 
       callback=self.parse_welcome)] 

    # Post welcome page's first form with the given user/pass 
    def parse_welcome(self, response): 
     formdata = {'logUser': 'rtadewald', 
        'logPass': '123'} 
     return FormRequest.from_response(
      response, 
      formdata=formdata) 

を、私はこれを得ましたDev Toolsを開き、そのURLのcURLをコピーしてからhttps://curl.trillworks.com/ウェブサイトにアクセスし、Pythonコードを入手して、そのコードをScrapyに再利用してください。

enter image description here

class AliceWeb2(Spider): 
    name = "login" 

    # Start on the welcome page 
    def start_requests(self): 
     headers = { 
      'Origin': 'http://aliceweb.mdic.gov.br', 
      'Accept-Encoding': 'gzip, deflate', 
      'Accept-Language': 'en-US,en;q=0.9', 
      'Upgrade-Insecure-Requests': '1', 
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36', 
      'Content-Type': 'application/x-www-form-urlencoded', 
      'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 
      'Cache-Control': 'max-age=0', 
      'Referer': 'http://aliceweb.mdic.gov.br/usuario/recuperar-senha', 
      'Connection': 'keep-alive', 
      'DNT': '1', 
     } 

     yield Request('http://aliceweb.mdic.gov.br//usuario/login?tx_usuario=ABC&tx_senha=ABC', callback=self.parse_welcome, headers=headers, data=data, method="POST") 

    def parse_welcome(self, response): 
     #do something here 

EDIT 1: 私は開発ツールで要求を観察すると、私はそれらのパラメータが送信されていた見て、スクリーンショットのFORM DATAを参照してください。

(別のヒント): preserver logをチェックすると、ログイン後に他のページにリダイレクトされた場合の前のページのリクエストが表示されます。代わりに、スクリーンショットの

enter image description here

+0

あなたのエラーメッセージを投稿!どうもありがとうございます! ちょっと質問すると、単にhttp://aliceweb.mdic.gov.br//usuario/login?tx_usuario = ABC&tx_senha = ABC '**にリクエストする必要があることはどうでしたか? * http://aliceweb.mdic.gov.br//usuario/login** ありがとう! 編集1:「ログを保存する」をチェックすると、表示されているようにフォームデータが表示されません。他の選択肢はありますか? https://i.stack.imgur.com/RBwR2.png –

+0

@RodrigoSoaresTadewaldは不可能です...これらのパラメータが表示されるはずです...どのクロムバージョンを使用していますか?それはすべてのクロムバージョンBTWのそれらのパラメータを表示する必要があります....間違ったユーザー/パスの組み合わせを入力しようとし、それらが表示されるかどうかを試してみてください – Umair

関連する問題