2016-11-30 48 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"> 

對於迴應網址與價格我嘗試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(你必須檢查哪些參數實際使用) 。但當然會傳遞更多東西,大多數是餅乾。

這樣做的請求後,服務器知道,並設置當前會話是從該位置,所以你需要做的另一個請求到以前的網站來獲得與實際數據的信息。

在Scrapy它會是這樣的:

  • 請求http://www.lowes.com/search?searchTerm=faucets
  • 請求與餅乾以前的鏈接。再次
  • 請求http://www.lowes.com/search?searchTerm=faucets通過所有的cookies

Scrapy應該由自己來處理cookies,但你當然不能100%肯定的是,可能會有一些自定義Cookie。