2017-11-07 8 views
0

LinkextractorがScrapyでどのように動作しているかを理解しようとしています。 は私が達成しようとしています:スタートページにLinkextractor in Scrapy、pageing and 2 depth link

を-follow改ページ

- 検索のURL、見つかったリンクページ-inパターン

内のすべてのリンクをスキャンし、そのページのマッチングの別のリンクをたどりますパターン等の改ページを見てからそのページをスクラップ

class ToScrapeMyspider(CrawlSpider): 
    name   = "myspider" 
    allowed_domains = ["myspider.com"] 
    start_urls  = ["www.myspider.com/category.php?k=766"] 
    rules = (
     Rule(LinkExtractor(restrict_xpaths='//link[@rel="next"]/a'), follow=True), 
     Rule(LinkExtractor(allow=r"/product.php?p=\d+$"), callback='parse_spider') 
) 

    def parse_spider(self, response): 
    Request(allow=r"/product.php?e=\d+$",callback=self.parse_spider2) 

    def parse_spider2(self, response): 

    #EXTRACT AND PARSE DATA HERE ETC (IS WORKING) 

マイリンク:

< link rel="next" href="https://myspider.com/category.php?k=766&amp;amp;s=100" > 

まず私は

'strの' オブジェクトが

'iter' は何の属性を持っていません。しかし、私は、私は

答えて

0

が最後に作業物事を台無しにしていると思いますrestrict_xpathsからエラーが出ます:

rules = (
      Rule(LinkExtractor(allow=(), restrict_xpaths=('//a[@rel="next"]',)), follow=True), 
      Rule(LinkExtractor(allow=('product\.php',)), callback='parse_sider'), 
) 


BASE_URL = 'https://myspider.com/' 

def parse_spy(self, response): 
    links = response.xpath('//li[@id="id"]/a/@href').extract() 
    for link in links: 
     absolute_url = self.BASE_URL + link 
     yield scrapy.Request(absolute_url, callback=self.parse_spider2)