2015-09-20 83 views

回答

1

我會推薦閱讀Scrapy文檔這裏:根據你的使用情況http://doc.scrapy.org/en/latest/

,我也會推薦你閱讀大約Spider論據 here:http://doc.scrapy.org/en/latest/topics/spiders.html#spider-arguments

一旦這樣做,請按照你的shell下列步驟操作:

  1. 創建Scrapy項目

    scrapy startproject命令維基

    CD維基

  2. 創建第一個蜘蛛

    scrapy genspider類別wikipedia.org來

  3. 創建您的第一項(WikipediaItem)。編輯維基百科/items.py,刪除一切,並添加以下代碼:

    #coding:utf-8 
    import scrapy 
    
    class WikipediaItem(scrapy.Item): 
        category_name = scrapy.Field() 
        category_url = scrapy.Field() 
        letter_name = scrapy.Field() 
    
  4. 編輯類別蜘蛛,它位於維基/蜘蛛/ categories.py,刪除一切,並添加以下代碼:

    #coding:utf-8 
    import scrapy 
    from wikipedia.items import WikipediaItem 
    
    class CategoriesSpider(scrapy.Spider): 
        name = "categories" 
        allowed_domains = ["wikipedia.org"] 
    
        def __init__(self, category=None, *args, **kwargs): 
         super(CategoriesSpider, self).__init__(*args, **kwargs) 
         if category is not None: 
          self.start_urls = ['https://en.wikipedia.org/wiki/Category:%s' % category] 
    
        def parse(self, response): 
         sel = response.xpath 
         item = WikipediaItem() 
    
         categories_letters = sel('//div[@id="mw-pages"]/div/div/div[@class="mw-category-group"]') 
         for letter in categories_letters: 
          letter_name = ''.join(letter.xpath('.//h3/text()').extract()).replace(u'\xa0', u'') 
          for category in letter.xpath('.//ul/li/a'): 
           category_name = ''.join(category.xpath('.//@title').extract()) 
           category_url = ''.join(category.xpath('.//@href').extract()) 
           item['category_name'] = category_name 
           item['category_url'] = category_url 
           item['letter_name'] = letter_name 
           yield item 
    
  5. 最後,使用您選擇的類別安排爬網。在這種情況下,我用Sorting_algorithms類別:

    scrapy爬行類-a類= Sorting_algorithms -o results.json -t JSON

  6. 我會讓你的shell顯示你的結果。這只是您想要實現的一部分,您可以繼續閱讀文檔,並詢問您是否有任何疑問。希望這可以幫助。