本次将会使用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!

注意:本人现已开通两个微信公众号: 因为Python(微信号为:python_math)以及轻松学会Python爬虫(微信号为:easy_web_scrape), 欢迎大家关注哦~~

Scrapy爬虫(5)爬取当当网图书畅销榜的更多相关文章

  1. 网络爬虫之定向爬虫:爬取当当网2015年图书销售排行榜信息(Crawler)

    做了个爬虫,爬取当当网--2015年图书销售排行榜 TOP500 爬取的基本思想是:通过浏览网页,列出你所想要获取的信息,然后通过浏览网页的源码和检查(这里用的是chrome)来获相关信息的节点,最后 ...

  2. python爬虫06 | 你的第一个爬虫,爬取当当网 Top 500 本五星好评书籍

    来啦,老弟 我们已经知道怎么使用 Requests 进行各种请求骚操作 也知道了对服务器返回的数据如何使用 正则表达式 来过滤我们想要的内容 ... 那么接下来 我们就使用 requests 和 re ...

  3. java爬虫,爬取当当网数据

     背景:女票快毕业了(没错!我是有女票的!!!),写论文,主题是儿童性教育,查看儿童性教育绘本数据死活找不到,没办法,就去当当网查询下数据,但是数据怎么弄下来呢,首先想到用Python,但是不会!!百 ...

  4. 【转】java爬虫,爬取当当网数据

     背景:女票快毕业了(没错!我是有女票的!!!),写论文,主题是儿童性教育,查看儿童性教育绘本数据死活找不到,没办法,就去当当网查询下数据,但是数据怎么弄下来呢,首先想到用Python,但是不会!!百 ...

  5. python爬取当当网的书籍信息并保存到csv文件

    python爬取当当网的书籍信息并保存到csv文件 依赖的库: requests #用来获取页面内容 BeautifulSoup #opython3不能安装BeautifulSoup,但可以安装Bea ...

  6. 爬取豆瓣网图书TOP250的信息

    爬取豆瓣网图书TOP250的信息,需要爬取的信息包括:书名.书本的链接.作者.出版社和出版时间.书本的价格.评分和评价,并把爬取到的数据存储到本地文件中. 参考网址:https://book.doub ...

  7. scrapy项目3:爬取当当网中机器学习的数据及价格(spider类)

    1.网页解析 当当网中,人工智能数据的首页url如下为http://category.dangdang.com/cp01.54.12.00.00.00.html 点击下方的链接,一次观察各个页面的ur ...

  8. python 爬虫之爬取大街网(思路)

    由于需要,本人需要对大街网招聘信息进行分析,故写了个爬虫进行爬取.这里我将记录一下,本人爬取大街网的思路. 附:爬取得数据仅供自己分析所用,并未用作其它用途. 附:本篇适合有一定 爬虫基础 crawl ...

  9. Python爬虫之爬取慕课网课程评分

    BS是什么? BeautifulSoup是一个基于标签的文本解析工具.可以根据标签提取想要的内容,很适合处理html和xml这类语言文本.如果你希望了解更多关于BS的介绍和用法,请看Beautiful ...

随机推荐

  1. Django积木块五——分页

    分页 django本身带有分页功能,为什么要用他呢?因为它的代码更为简洁,并且在做筛选的时候会把url中的所有参数都组装起来,并且加上分页.也就是做筛选中的结果也可以用这个分页. pip instal ...

  2. python学习,excel操作之xlsxwriter常用操作

    from datetime import datetime import xlsxwriter #打开文件 workbook = xlsxwriter.Workbook('Expenses03.xls ...

  3. 网络操作系统 第七章 管理TCP/IP网络

    本章小结 本章介绍了TCP/IP的相关概念,并且在此处基础上,介绍了Windows Server 2008中使用TCP/IP网络配置工具实现网络连接和管理的方法,在Linux系统中,讲解了是如何使用图 ...

  4. JavaScript自定义鼠标右键菜单

    下面为JavaScript代码 window.onload = function () { //好友列表 var f = 0; //判断指定id的元素在页面中是否存在 if (document.get ...

  5. 132.leecode-Palindrome Partitioning II

    这个题需要两个dp,一个保存从i到j是否为回文串 另一个保存0到i的最小的分割 下面是我的效率不太高的代码 class Solution { public: int minCut(string s) ...

  6. Smokeping安装部署

    稳定性检测工具smokeping安装配置和使用方法 Smokeping介绍 是对IDC网络质量,稳定性等最好的检测工具,包括常规的 ping,dig,echoping,curl等,可以监视www服务器 ...

  7. day24_雷神_django项目部署

    # django项目部署 ... curl -I www.baidu.com 得到响应头信息 vim 里shift + % 找括号的另一半 find / -name virtualenv 3.创建虚拟 ...

  8. orcale mysql基本的分页查询法

    orcale分页查询sql语句: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNU ...

  9. jquery mobile Touch事件

    Touch事件在用户触摸屏幕(页面)时触发 1.jquery mobile tap tap事件在用户敲击某个元素时触发 $("p").on("tap",fucn ...

  10. map put值 使用匿名函数

    List<Map<String, Object>> list = setRoleMenuRlMapper.selectMapByParams(params); // Map m ...