scrapy框架爬取豆瓣读书

Posted yangjing000

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scrapy框架爬取豆瓣读书相关的知识,希望对你有一定的参考价值。

1.scrapy框架

Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。
主要组件:
技术分享图片

2.快速开始

scrapy startproject douban
cd到douban根目录下执行 scrapy genspider Douban book.douban.com
原网页结构
技术分享图片

3.xpath提取

xpath是基于XML的树状结构,有不同类型的节点,包括元素节点,属性节点和文本节点,提供在数据结构树中找寻节点的能力。
xpath初探:
提取书籍排行榜图片链接,以备后续保存
技术分享图片
提取作者,所在地区
技术分享图片

4.Douban.py代码

import scrapy
from douban.items import DoubanBookItem


class BookSpider(scrapy.Spider):
  name = 'douban-book'
  allowed_domains = ['douban.com']
  start_urls = [
    'https://book.douban.com'
  ]

  def parse(self, response):
    # 请求第一页
    yield scrapy.Request(response.url, callback=self.parse_next)
    #爬取其他页面
    for page in response.xpath('//div[@class="paginator"]/a'):
      link = page.xpath('@href').extract()[0]
      yield scrapy.Request(link, callback=self.parse_next)

  def parse_next(self, response):
    for item in response.xpath('//tr[@class="item"]'):
      book = DoubanBookItem()
      book['name'] = item.xpath('td[2]/div[1]/a/@title').extract()[0]
      book['content'] = item.xpath('td[2]/p/text()').extract()[0]
      book['ratings'] = item.xpath('td[2]/div[2]/span[2]/text()').extract()[0]
      yield book

5.明天继续更新items.py、pipelines(管道数据流)、middlewaares(中间件)编写

技术分享图片

以上是关于scrapy框架爬取豆瓣读书的主要内容,如果未能解决你的问题,请参考以下文章

爬虫实战利用scrapy框架爬取豆瓣图书信息

基于python的scrapy框架爬取豆瓣电影及其可视化

Scrapy爬虫 爬取豆瓣TOP250

(Scrapy框架)爬虫获取豆瓣正在热映的电影信息,xpath属性爬取 | 爬虫案例

使用scrapy爬取豆瓣上面《战狼2》影评

爬虫学习--MOOC爬取豆瓣top250