博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Scrapy爬虫(5)爬取当当网图书畅销榜
阅读量:6318 次
发布时间:2019-06-22

本文共 1721 字,大约阅读时间需要 5 分钟。

  本次将会使用Scrapy来爬取当当网的图书畅销榜,其网页截图如下:

当当网图书畅销榜

  我们的爬虫将会把每本书的排名,书名,作者,出版社,价格以及评论数爬取出来,并保存为csv格式的文件。项目的具体创建就不再多讲,可以参考,我们只需要修改items.py文件,以及新建一个爬虫文件BookSpider.py.

  items.py文件的代码如下,用来储存每本书的排名,书名,作者,出版社,价格以及评论数。

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

  BookSpider.py代码如下,用来具体地爬取数据。

import scrapyfrom scrapy.selector import Selectorfrom bookSpider.items import BookspiderItemclass 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

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

书的信息

  我们可以发现,书的信息不是有序储存的,但还是达到了笔者的要求,怎么样,是不是觉得Scrapy简单又使用呢?强大的Scrapy!

你可能感兴趣的文章
BZOJ3237:[AHOI2013]连通图(线段树分治,并查集)
查看>>
如何提高Ajax性能
查看>>
Android--自定义加载框
查看>>
LINUX下 lamp安装及配置
查看>>
BZOJ3105 [cqoi2013]新Nim游戏
查看>>
困惑的前置操作与后置操作
查看>>
BZOJ 2118 Dijkstra
查看>>
Go语言基础之结构体
查看>>
Jenkins
查看>>
linux下使用screen和ping命令对网络质量进行监控
查看>>
数据库设计技巧
查看>>
css定位概述
查看>>
segment
查看>>
Linux信号 编程
查看>>
面试/编程
查看>>
打造一个上传图片到图床利器的插件(Mac版 开源)
查看>>
thinkphp判断更新是否成功
查看>>
Do While ... Loop 与 Do Until ... Loop 的区别
查看>>
高效使用jquery之一:请使用'On'函数
查看>>
ERP环境检测工具设计与实现 Environment Detection
查看>>