文章目录

  • 1.Scrapy注意点
  • 2. Scrapy爬取豆瓣读书和评分
    • 代码部分
      • 数据定义items.py
      • 爬虫部分spiders/book.py
      • 数据存储部分pipelines.py
      • 启动爬虫执行cmd命令 start.py

1.Scrapy注意点

Scrapy是爬虫框架。

它分为一下部分,其中引擎是核心

  1. Scrapy Engine(引擎):负责spider、ltemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。
  2. Scheduler(调度器):它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。默认使用16个线程爬取数据
  3. Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给spider来处理。
  4. Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取ltem字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器)。
  5. ltem Pipeline(管道):它负责处理Spider中获取到的ltem,并进行后期处理(详细分析、过滤、存储等)的地方。(将爬虫爬取到的数据进行存储)
  6. Downloader Middlewares(下载中间件):一个可以自定义扩展下载功能的组件。
  7. Spider Middlewares (Spider中间件):一个可以自定扩展和操作引擎和spider中间通信的功能组件。

通过pip install scrapy在终端上下载这个爬虫框架。

注意:框架不能像包一样直接导入,需要生成框架结构,在这个结构上操作

启动框架:

首先在终端上进入到要生成项目的路径.

然后输入scrapy startproject 项目名启动框架

此时项目路径下会有一个框架生成的文件夹

之后生成爬虫文件命令如图:

先进入爬虫spiders文件夹中,输入scrapy genspider 爬虫文件名称 爬取网页的链接命令生成爬虫文件。这里以豆瓣读书为例

最后使用scrapy crawl +爬虫名(book)来启动爬虫,因为在终端不方便数据查询,所以一般会使用其他方式启动。

这里创建新文件运行这个命令

运行结果scrapy日志信息是红色输出,网页源码以白色输出。

2. Scrapy爬取豆瓣读书和评分

scrapy爬取基本流程如下:

  1. 设置爬虫基础参数 settings.py
  2. 爬虫
  3. 数据封装
  4. 管道

设置爬虫基础参数

这里不遵守这个协议,否则爬取不到什么信息了。改成False


默认爬取的线程数,可以取消注释,并修改数目,默认16个线程。


爬取网页后暂停的时间数目,默认不暂停。


请求头,这里需要至少要修改成浏览器信息


设定保存优先级,数字越大,优先级越小。用于多种保存方式下,哪一种保存方式优先。

代码部分

数据定义items.py

# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.htmlimport scrapy# 封装数据
class TestscrapyItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()title = scrapy.Field()rating_nums = scrapy.Field()

爬虫部分spiders/book.py

import scrapy
import re
from ..items import TestscrapyItemclass BookSpider(scrapy.Spider):name = 'book'  # 通过这个名字启动爬虫allowed_domains = ['book.douban.com']start_urls = ['https://book.douban.com/top250?start=0']def parse(self, response):# response是爬虫返回的网页数据# print(response.text)# 封装对象items = TestscrapyItem()title = re.findall('<a href=".*?" οnclick=.*?;moreurl.*?; title="(.*?)"', response.text)rating_nums = re.findall('<span class="rating_nums">(.*?)</span>', response.text)# print(rating_nums)# 封装数据给pipelinesfor title, rating_nums in zip(title, rating_nums):items['title'] = titleitems['rating_nums'] = rating_numsyield items #给pipelines

数据存储部分pipelines.py

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html# useful for handling different item types with a single interface
from itemadapter import ItemAdapter# 保存数据
class TestscrapyPipeline:def __init__(self):self.file = open('data.txt', 'w', encoding='utf-8')def process_item(self, item, spider):self.file.write(f"{item['title']}  评分:{item['rating_nums']}\n==========\n")return item  # 通知爬虫,这个数据已经保存成功了# 析构函数def __del__(self):self.file.close()print('文件保存成功')

启动爬虫执行cmd命令 start.py

import osos.system('scrapy crawl book')

运行结果


Python-爬虫(Scrapy爬虫框架,爬取豆瓣读书和评分)相关推荐

  1. 爬虫项目实操三、用scrapy框架爬取豆瓣读书Top250的书名,出版信息和评分

    安装方法:Windows:在终端输入命令:pip install scrapy:mac:在终端输入命令:pip3 install scrapy,按下enter键,再输入cd Python,就能跳转到P ...

  2. python爬虫模块排名_Python爬虫使用lxml模块爬取豆瓣读书排行榜并分析

    上次使用了beautifulsoup库爬取电影排行榜,爬取相对来说有点麻烦,爬取的速度也较慢.本次使用的lxml库,我个人是最喜欢的,爬取的语法很简单,爬取速度也快. 本次爬取的豆瓣书籍排行榜的首页地 ...

  3. 利用Python中的BeautifulSoup库爬取豆瓣读书中书本信息

    利用BeautifulSoup库,获取前250本图书的信息,需要爬取的信息包括书名.书名的URL链接.作者.出版社和出版时间.书本价格.评分和评论,把这些信息存到txt文件,要求将这些信息对齐,排列整 ...

  4. 一看就会的20行代码爬取豆瓣读书Top250

    想入门Python爬虫,大家都喜欢拿爬取豆瓣读书Top250为例子来练手. 下面我就给大家分享一个简单的爬虫. 1.确定所需库 首先我们要确定需要引入的库. 要爬取网页的数据,当然要发送请求啦,所以我 ...

  5. 使用python的scrapy框架简单的爬取豆瓣读书top250

    使用python的scrapy框架简单的爬取豆瓣读书top250 一.配置scrapy环境 1. 配置相应模块 如果没有配置过scrapy环境的一般需要安装lxml.PyOpenssl.Twisted ...

  6. Python爬虫入门 | 7 分类爬取豆瓣电影,解决动态加载问题

      比如我们今天的案例,豆瓣电影分类页面.根本没有什么翻页,需要点击"加载更多"新的电影信息,前面的黑科技瞬间被秒--   又比如知乎关注的人列表页面:   我复制了其中两个人昵称 ...

  7. 爬取豆瓣读书-豆瓣成员常用的标签(Python爬虫实战)

    前两篇博客,我们介绍了如何对豆瓣读书历史记录进行抓取,这一篇博客是一个收尾工作. 传送门: 爬取豆瓣读书-用户信息页链接(Python爬虫实战) 爬取豆瓣读书-用户所有阅读书籍名称.日期和书籍链接(P ...

  8. python爬虫爬取豆瓣读书Top250

    python爬虫爬取豆瓣读书Top250 话不多说,直接上代码! from urllib.request import urlopen, Request from bs4 import Beautif ...

  9. python爬虫(一)爬取豆瓣电影排名前50名电影的信息

    python爬虫(一)爬取豆瓣电影排名前50名电影的信息 在Python爬虫中,我们可以使用beautifulsoup对网页进行解析. 我们可以使用它来爬取豆瓣电影排名前50名的电影的详细信息,例如排 ...

最新文章

  1. 福利 | “石墨烯之父”现场演讲!中国科幻大会“科技与未来”论坛报名中
  2. Arrays常见用法
  3. web前端零基础入门学习!前端真不难!
  4. 第六章 Windows应用程序对键盘与鼠标的响应
  5. linux输入法源,Manjaro Linux 添加源及输入法
  6. 神经网络(11)--具体实现:unrolling parameters
  7. Java十六进制浮点文字
  8. 极其良心的设计导航网站
  9. 中国人工智能学会通讯——深度学习与推荐系统 1.2 基于特征的推荐 (Feature-based Recommendation)...
  10. 政史系列:《社会契约论》读书笔记
  11. uliso刻录系统到U盘
  12. PHP微信h5棋牌搭建sprintf()函数的使用
  13. Win7系统怎么开启远程桌面?Win7远程桌面怎么用(转)
  14. php 图形库 锯齿,PHP imageantialias – 是否使用抗锯齿(antialias)功能 | 菜鸟教程...
  15. iOS IPv6测试环境搭建及服务器ipv6测试
  16. 周易六十四卦——泽水困卦
  17. 从公司角度来看,为什么要招实习生?
  18. C# 汉字与拼音互转
  19. 中断系统应用实例(1)用定时器T1工作方式1控制两个LED以不同周期闪烁
  20. 汽车配件管理系统分析报告

热门文章

  1. ext ajax同步加载数据,ext 的loadmask 与ajax的同步请求水火不容
  2. 为什么程序员和产品经理水火不容? | 每日趣闻
  3. Manage images
  4. 使用easypoi导出注解添加序号,无须重写ExcelExportUtil类
  5. Vue——axios的二次封装
  6. Webpack工具 - 打包执行中的奇奇怪怪
  7. HDU 4884 —— TIANKENG’s rice shop(模拟)
  8. Python+NumPy中的diag函数(简易理解)
  9. python mysql 并发_python3.6使用sqlalchemy读取mysql中的数据并进行多进程并发处理
  10. java GUI实现记事本