天天看點

Scrapy爬蟲(5)爬取當當網圖書暢銷榜

  本次将會使用Scrapy來爬取當當網的圖書暢銷榜,其網頁截圖如下:

  我們的爬蟲将會把每本書的排名,書名,作者,出版社,價格以及評論數爬取出來,并儲存為csv格式的檔案。項目的具體建立就不再多講,可以參考

上一篇部落格

,我們隻需要修改items.py檔案,以及建立一個爬蟲檔案BookSpider.py.

  items.py檔案的代碼如下,用來儲存每本書的排名,書名,作者,出版社,價格以及評論數。

import scrapy

class BookspiderItem(scrapy.Item):
    rank = scrapy.Field()
    name = scrapy.Field()
    author = scrapy.Field()
    press = scrapy.Field()
    price = scrapy.Field()
    comments = scrapy.Field()           

  BookSpider.py代碼如下,用來具體地爬取資料。

import scrapy
from scrapy.selector import Selector
from bookSpider.items import BookspiderItem

class bookSpider(scrapy.Spider):
    name = 'bookScrapy'
    start_urls = ['http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-recent7-0-0-1-%d'%i for i in range(1,26)]

    def parse(self, response):
        item = BookspiderItem()
        sel = Selector(response)

        book_list = response.css('ul.bang_list.clearfix.bang_list_mode').xpath('li')

        for book in book_list:
            item['rank'] = book.css('div.list_num').xpath('text()').extract_first()
            item['name'] = book.css('div.name').xpath('a/text()').extract_first()
            item['author'] = book.css('div.publisher_info')[0].xpath('a/text()').extract_first()
            item['press'] = book.css('div.publisher_info')[1].xpath('a/text()').extract_first()
            item['price'] = book.css('span.price_n').xpath('text()').extract_first()
            item['comments'] = book.css('div.star').xpath('a/text()').extract_first()

            yield item           

  代碼就是這麼簡單,哈哈,别忘了在settings.py中将設定“ROBOTSTXT_OBEY = False”.

  整個項目就是這樣啦,最後,我們運作指令

scrapy crawl bookScrapy -o dangdang.csv -t csv           

這樣就會把剛才爬取的資料儲存為dangdang.csv,該檔案在spiders目錄下。

  打開dangdang.csv,其中的部分内容如下:

  我們可以發現,書的資訊不是有序儲存的,但還是達到了筆者的要求,怎麼樣,是不是覺得Scrapy簡單又使用呢?強大的Scrapy!