2016-11-30 22 views
2

イム私は、フィールド内の任意の郵便番号や乱数を入力している価格で隠しテキストを表示するためにはScrapy を使用してthisページを解析しようとしています:についてはScrapy FormRequest.from_response()メソッド

<input aria-label="Enter your zip code" role="textbox" name="searchTerm" class="form-control js-list-zip-entry-input" placeholder="ZIP Code" autocompletetype="find-a-store-search" tabindex="-1" type="text"> 

を応答URL私はyse FormRequest.from_responseを試してみましたが、正常に動作しません。 誰かが私が価格でどのように対応できるか説明することができますか?

import scrapy 
from scrapy.http.request import Request 
from scrapy.http import FormRequest 
from scrapy.spiders import CrawlSpider, Rule 
from scrapy.linkextractors import LinkExtractor 

class SattySpider(scrapy.Spider): 
    name = "lowes-faucet" 
    allowed_domains = ["lowes.com"] 
    start_urls = [ "http://www.lowes.com/search?searchTerm=faucets"] 

    def parse(self, response): 
     yield FormRequest.from_response(response, 
              formnumber=1, 
              formxpath='id("store-locator-form")', 
              formdata={'searchTerm': '58000'}, 
              callback=self.parse1, method="GET") 
    def parse(self, response): 
     open_in_browser(response) 
     ... 
+0

何parse1? – daniboy000

答えて

0

(あなたが実際に使用するパラメータをチェックする必要があります)ここでの問題は、フォームが実際の要求を送信する前に、いくつかのJavaScriptコードを実行していることにある、との要求が別のサイトに行われている、this one for example 。もちろん、より多くのもの、主にクッキーを渡します。

その要求を行った後、サーバーは知っていて、現在のセッションがその場所からなので、あなたが実際のデータと情報を取得するために、以前のサイトに別のリクエストを行う必要があることを設定します。

  • リクエストクッキーと前のリンクへのお願い
  • http://www.lowes.com/search?searchTerm=faucetsへ:

    Scrapyでは、のようなものになるでしょう。すべてのクッキー

  • を渡す http://www.lowes.com/search?searchTerm=faucetsに再び
  • 要求

Scrapyは、それ自体でクッキーを処理する必要があり、もちろん、あなたが100%確認することができない、いくつかのカスタムクッキーがある可能性があります。