2016-04-28 8 views
-1

私は最終的に作業スクリプトを取得することができました。 わずか1つの小さな問題です。最初のページを除いて、すべてのページをクロールして必要な情報をすべて取得できます。リンク抽出プログラムの援助

ここで私のエラー

import scrapy.selector 
from scrapy.spiders import CrawlSpider, Rule 
from scrapy.linkextractors import LinkExtractor 
from Prijsvergelijking.items import PrijsvergelijkingItem 

class MySpider(CrawlSpider): 
    name = "coolblue" 
    allowed_domains = ["tvstore.be"] 
    start_urls = ["http://www.tvstore.be/category/192945/televisies.html"] 
    rules = (Rule(LinkExtractor(allow=(), restrict_xpaths=('//a[@class="pagination next secondary"]',)), callback = "parse_items",follow = True),)  
    def parse_items(self, response): 
     products = response.xpath("//li[@class='product-list-columns--item product-list-item']") 
     for product in products: 
      item = PrijsvergelijkingItem() 
      item["Product_ref"] = product.xpath(".//h2/a/text()").extract_first().strip() 
      item["Product_price"] = product.xpath(".//strong[1]/text()").extract_first().strip().replace(",",".").replace("-","") 
      yield item 

答えて

0

私は十分に見苦しくありませんでした。

答えが見つかりました。私がしなければならなかったのは、parse_Itemsをparse_start_urlに変更することでした。

from scrapy.spiders import CrawlSpider, Rule 
import scrapy.selector 
from scrapy.linkextractors import LinkExtractor 
from Prijsvergelijking.items import PrijsvergelijkingItem 

class MySpider(CrawlSpider): 
    name = "msh" 
    allowed_domains = ["mediamarkt.be"] 
    start_urls = ["http://www.mediamarkt.be/mcs/productlist/_TV,98952,452540.html?langId=-17&searchParams=&sort=&view=&page=1"] 
    rules = (Rule(LinkExtractor(allow=(), restrict_xpaths=('//li[@class="pagination-next"]',)), callback = "parse_start_url",follow = True),)  
    def parse_start_url(self, response): 
     products = response.xpath("//ul[@class='products-list']/li/div") 
     for product in products:  
      item = PrijsvergelijkingItem() 
      item["Product_price"] = product.xpath('.//aside/div/div/div/text()').extract_first().replace(",", ".").replace("-", "") 
      item["Product_ref"] = product.xpath('.//div/h2/a/text()').extract_first().strip() 
      yield item