随着互联网的发展,人们越来越依赖于网络来获取信息。而对于图书爱好者而言,豆瓣图书已经成为了一个不可或缺的平台。并且,豆瓣图书也提供了丰富的图书评分和评论,使读者能够更加全面地了解一本图书。但是,手动获取这些信息无异于大海捞针,这时候,我们可以借助 Scrapy 工具进行数据爬取。
Scrapy 是一个基于 Python 的开源网络爬虫框架,它可以帮助我们高效地从网站上提取数据。在本篇文章中,我将以操作步骤为主,详细介绍如何使用 Scrapy 爬取豆瓣图书及其评分和评论。
第一步:安装 Scrapy
首先,需要在电脑上安装 Scrapy。如果你已经安装好 pip(Python 包管理工具),只需要在终端或命令行输入下面的指令:
pip install scrapy登录后复制
如此,Scrapy 就会被安装到你的电脑中。如果出现了错误或警告,建议根据提示进行相应的调整。
第二步:新建 Scrapy 项目
接下来,我们需要在终端或命令行输入下面的指令来新建一个 Scrapy 项目:
scrapy startproject douban登录后复制
这个指令会在当前目录下创建一个名叫 douban 的文件夹,其中包含了 Scrapy 的基本文件和目录结构。
第三步:编写爬虫程序
在 Scrapy 中,我们需要编写一个爬虫程序来告诉 Scrapy 如何从网站中提取数据。因此,我们需要新建一个名叫 douban_spider.py
的文件,并编写如下代码:
import scrapy class DoubanSpider(scrapy.Spider): name = 'douban' allowed_domains = ['book.douban.com'] start_urls = ['https://book.douban.com/top250'] def parse(self, response): selector = scrapy.Selector(response) books = selector.xpath('//tr[@class="item"]') for book in books: title = book.xpath('td[2]/div[1]/a/@title').extract_first() author = book.xpath('td[2]/div[1]/span[1]/text()').extract_first() score = book.xpath('td[2]/div[2]/span[@class="rating_nums"]/text()').extract_first() comment_count = book.xpath('td[2]/div[2]/span[@class="pl"]/text()').extract_first() comment_count = comment_count.strip('()') yield {'title': title, 'author': author, 'score': score, 'comment_count': comment_count}登录后复制
上面的代码实现了两个功能:
- 爬取豆瓣图书 top250 页面中的书籍标题、作者、评分和评论数。
- 将爬取到的数据以字典的形式返回。
在这个程序中,我们首先需要定义一个 DoubanSpider
类,并指定爬虫的名称、允许爬虫访问的域名和起始 URL。在 parse
方法中,我们通过 scrapy.Selector
对象进行 HTML 页面解析,并使用 XPath 表达式获取书籍的相关信息。
获取数据后,我们使用 yield
关键字将数据以字典的形式返回。这里的 yield
关键字的作用是将函数变成一个生成器,实现一次返回一个数据的效果。在 Scrapy 中,我们可以通过定义生成器的方式,实现对网站数据的高效抓取。
第四步:运行爬虫程序
在编写完爬虫程序后,我们需要在终端或命令行中运行以下代码来启动爬虫程序:
scrapy crawl douban -o result.json登录后复制
这个指令的作用是启动名为 douban
的爬虫,并将爬取到的数据以 JSON 格式输出到 result.json 文件中。
通过以上四步操作,我们就可以成功地爬取豆瓣图书及其评分和评论信息了。当然,如果你需要进一步提高爬虫程序的效率和稳定性,还需要进行一些其他的优化和调整。例如:设置延迟时间、防止反爬机制等等。
总之,使用 Scrapy 爬取豆瓣图书及其评分和评论信息是一个相对简单又有趣的任务。如果你对数据爬取和 Python 编程有兴趣,可以进一步尝试其他网站的数据爬取,提高自己的编程技能。