2016-05-02 6 views
0

クロールスパイダーを使用して次のページリンクをクロールしようとしていますが、解析機能を他のものに変更しても結果が得られません。私のルールは機能していません。解析機能を持つ現在のページしか取得できません。間違っています。次のページでは処理クロールスパイダールールが機能しません

これは私のnaukri_spider.pyファイル

import scrapy 

from scrapy import Spider 
from scrapy.contrib.spiders import CrawlSpider, Rule 
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor 
from naukri.items import NaukriItem 

class NaukriSpider(Spider): 
    name = "naukri" 
    allowed_domains = ["naukri.com"] 
    start_urls = ["http://www.naukri.com/information-technology-jobs?xt=catsrch&qf[]=24"] 

    rules = (
    Rule(SgmlLinkExtractor(allow=(), restrict_xpaths=('//div[@class="pagination"]/a/button[@class="grayBtn"]',)), callback="parse", follow= True), 
) 

    def parse(self,response): 
     for sel in response.xpath('//*[@class="content"]'): 
      item = NaukriItem() 
      item['title'] = sel.xpath('span[@class="desig"]/text()').extract() 
      item['location'] = sel.xpath('span[@class="loc"]/span/text()').extract() 
      item['organization'] = sel.xpath('span[@class="org"]/text()').extract() 
      yield item 
+0

チェック 'warning':http://doc.scrapy.org/en/latest/topics/spiders.html#crawling-rules – eLRuLL

答えて

0

リンクをたどるために使用されるCrawlSpiderによってimplemeted parse方法です。ルールコールバックをparse_start_urlに変更し、それを上書きします。

このコードは正常に動作します。

import scrapy 

from scrapy import Spider 
from scrapy.contrib.spiders import CrawlSpider, Rule 
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor 
from stackoverflow.items import NaukriItem 

class NaukriSpider(CrawlSpider): 
    name = "naukri" 
    allowed_domains = ["naukri.com"] 
    start_urls = ["http://www.naukri.com/information-technology-jobs?xt=catsrch&qf[]=24"] 

    rules = (
     Rule(SgmlLinkExtractor(allow=('information-technology-jobs.*',)), callback="parse_start_url", follow= True), 
    ) 

    def parse_start_url(self,response): 
     for sel in response.xpath('//*[@class="content"]'): 
      item = NaukriItem() 
      item['title'] = sel.xpath('span[@class="desig"]/text()').extract() 
      item['location'] = sel.xpath('span[@class="loc"]/span/text()').extract() 
      item['organization'] = sel.xpath('span[@class="org"]/text()').extract() 
      yield item 
+0

が働いたありがとう – user6275124

関連する問題