Python爬虫:使用Scrapy框架爬取豆瓣读书和评分

作者:da吃一鲸8862024.01.17 17:56浏览量:10

简介:本文将介绍如何使用Python的Scrapy框架来爬取豆瓣读书的书籍信息和评分。我们将通过实例展示如何设置爬虫、提取数据和处理反爬虫机制。

千帆应用开发平台“智能体Pro”全新上线 限时免费体验

面向慢思考场景,支持低代码配置的方式创建“智能体Pro”应用

立即体验

在开始之前,请确保你已经安装了Scrapy框架。如果尚未安装,可以通过以下命令进行安装:

  1. pip install scrapy

首先,创建一个新的Scrapy项目,并进入项目目录:

  1. scrapy startproject DoubanBookSpider
  2. cd DoubanBookSpider

DoubanBookSpider目录下,我们需要创建一个新的Spider来定义爬取豆瓣读书的逻辑。在spiders目录下创建一个名为douban_book.py的文件,并添加以下代码:

  1. import scrapy
  2. from douban.items import DoubanItem
  3. class DoubanBookSpider(scrapy.Spider):
  4. name = 'douban_book'
  5. start_urls = ['https://book.douban.com/top250'] # 豆瓣读书TOP250列表页
  6. def parse(self, response):
  7. # 提取书籍列表
  8. books = response.css('div.item')
  9. for book in books:
  10. item = DoubanItem()
  11. item['title'] = book.css('div.info > h1.title::text').get() # 提取书名
  12. item['rating'] = book.css('div.bd > div.star > span.rating_num::text').get() # 提取评分
  13. yield item

在上面的代码中,我们定义了一个名为DoubanBookSpider的Spider,它从豆瓣读书的TOP250列表页开始爬取。在parse方法中,我们使用CSS选择器提取书籍的标题和评分,并将它们存储在一个名为DoubanItem的Item对象中。最后,我们使用yield语句返回该Item对象。
接下来,我们需要定义一个Item对象来存储爬取到的数据。在items.py文件中添加以下代码:

  1. import scrapy
  2. class DoubanItem(scrapy.Item):
  3. title = scrapy.Field() # 书名
  4. rating = scrapy.Field() # 评分

现在,我们已经完成了Spider的定义和Item对象的创建。接下来,我们需要配置Scrapy以运行我们的爬虫。在settings.py文件中添加以下配置:

  1. BOT_NAME = 'DoubanBookSpider'
  2. SPIDER_MODULES = ['DoubanBookSpider.spiders']
  3. NEWSPIDER_MODULE = 'DoubanBookSpider.spiders'

现在,我们可以运行我们的爬虫了。在项目根目录下运行以下命令:

  1. scrapy crawl douban_book -o books.csv -t csv

这将启动爬虫并输出结果到一个名为books.csv的CSV文件中。你可以根据需要修改输出文件的格式和名称。
以上就是使用Scrapy框架爬取豆瓣读书和评分的完整过程。请注意,由于网络环境和反爬虫机制的变化,你可能需要根据实际情况调整代码以适应新的情况。此外,在使用爬虫时应遵守相关法律法规和网站的使用协议,尊重网站的数据和隐私。

article bottom image

相关文章推荐

发表评论