Scrapy爬虫(5)爬取当当网图书畅销榜

news/2024/7/1 18:53:42

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

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


书的信息

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


http://www.niftyadmin.cn/n/1998693.html

相关文章

一生要珍惜的十种人

1、遇到你真正爱的人时,要努力争取和他相伴一生的机会。因为当他离去时,一切都来不及了。 2、遇到可相信的朋友时,要好好和他相处下去。因为在人的一生中,可遇到知己真的不易。 3、遇到人生中的贵人时,要记得好好感激,因为他是你人生的转折点…

成功者的困境

一位很久不见的老朋友,最近来找我。他是一位非常成功的企业家,公司已经上市很长的时间,股价曾经超过百元,是投资大众追捧的目标。六年前,他意气风发之时,也是我最为困顿的时候。那时,我正被老板…

看看你古时候的社会地位![Z]

把自己的名字   例如:“王二小”“wex”“大理白痴诗人”   附:从姓氏开始找,再往下找名。若是只有两个字的,便从“姓氏”与“结字”中各找一个。 若是三个字的,便先从“姓氏”找起,再往下找两个名…

linux自带mariadb初始密码,Linux之MariaDB基础总结(一)

Linux之MariaDB基础总结(一)一、MariaDB简介MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,被视为开源数据库MySQL的替代品。MariaDB名称来自Michael Widenius的女儿Maria的名字。MariaDB 是一个采用 Maria 存储引擎的MySQL分支版本&…

爸爸的一句话:你能有多少东西沉淀下来

1987年,我大学毕业就进了出版社。开始的两三年,算是混日子,因为工作量太少了,完全缺乏刺激,所以就花了大量的时间去学习太极拳和八卦掌等,因为非常投入,也算小有功底。在练拳上,算是…

稳定的软件

软件的复杂度发展到今天的程度,每个参与软件生产的人对自己产品的质量可能多少都会有些担心。至今还没有理论能够系统的预估和保证软件产品的质量(可能永远不会发展出这样的理论,因为软件作为人类思想的固定形式,对其质量的系统化…

Jmeter之乱码 (一)

Jmeter历史版本下载: http://archive.apache.org/dist/jmeter/binaries/ Jmeter3.0接口测试脚本POST请求主体中的中文无法正确显示,现象如下: 解决方案: 修改{JMETER_HOME}\bin\jmeter.properties文件中的默认显示字体&#xff0c…

解决Vue axios post请求,后台获取不到数据问题

最近做项目,需要用到vue,后台是php,第一次使用axios进行请求,本以为同ajax一样,会很简单,但是结果往往不让人满意啊,get请求很简单,这里就不说了,主要说下 post请求方式。 使用axios进行post请求…