2017-08-19 12 views
0

私は過去2日間この問題に苦労しています。私はthisのウェブサイトからすべての "幹部"またはカテゴリのデータを削り取る必要があります。残念ながら、このウェブサイトでは、「すべてのカテゴリ」オプションを持たないドロップダウンメニュー「選択幹部」を介してこのデータにアクセスすることができます。これを回避するために、私はScrapyのFormRequest.from_responseメソッドを使用していますが、スパイダーはデータがない空のファイルを返しています。どんな助けもありがとうございます。ここでは、コードがあります:私はあなたのコードを実行するとScrapyのFormRequest.from_responseメソッドを使用すると、ドロップダウンメニューの賢明なデータのスクレイピングが自動化されます

import scrapy 

class IASWinnerSpider(scrapy.Spider): 

    name = 'iaswinner_list' 
    allowed_domains = ['http://civillist.ias.nic.in'] 

    def start_requests(self): 
     urls = [ 'http://civillist.ias.nic.in/UpdateCL/DraftCL.asp' ] 
     for url in urls: 
      yield scrapy.Request(url=url, callback=self.parse) 

    def parse(self, response): 
     return scrapy.FormRequest.from_response(response, method='POST', 
        formdata={'cboCadre': 'UT'}, dont_click=True, callback=self.after_post) 

    def after_post(self, response): 

     table  = response.xpath('/html/body/div/table//tr') 

     for t in table: 

      yield { 
       'serial': t.xpath('td[1]/text()').extract(), 
       'name': t.xpath('td[2]/text()').extract(), 
       'qual': t.xpath('td[3]/text()').extract(), 
       'dob': t.xpath('td[4]/text()').extract(), 
       'post': t.xpath('td[5]/text()').extract(), 
       'rem': t.xpath('td[6]/text()').extract(), 
      } 
+0

与えられたコードはまだ完全ではありません(cf. [mcve]参照)。この問題を示す '__main__'セクションを追加することをお勧めします。 – ederag

+0

リンハートの答えがあなたの必要とするものなら、それを「受け入れる」ことを忘れないでください。 –

+0

はい、完了しました。ありがとう。 –

答えて

1

、私はログでこれを参照してください。

2017-08-19 15:52:20 [scrapy.spidermiddlewares.offsite] DEBUG: Filtered offsite request to 'civillist.ias.nic.in': <POST http://civillist.ias.nic.in/UpdateCL/DraftCL.asp> 

はちょうどこのへallowed_domains変更:

allowed_domains = ['civillist.ias.nic.in'] 

をし、それが動作します。

関連する問題