介绍一下scrapy 爬虫框架

安装方法 pip install scrapy 就可以实现安装了。我自己用anaconda 命令为conda install scrapy。

1 Engine从Spider处获得爬取请求(Request)
2Engine将爬取请求转发给Scheduler,用于调度

3 Engine从Scheduler处获得下一个要爬取的请求
4 Engine将爬取请求通过中间件发送给Downloader
5 爬取网页后,Downloader形成响应(Response)通过中间件发给Engine
6 Engine将收到的响应通过中间件发送给Spider处理Engine将爬取请求转发给Scheduler,用于调度

7 Spider处理响应后产生爬取项(scraped Item)
和新的爬取请求(Requests)给Engine
8 Engine将爬取项发送给Item Pipeline(框架出口)
9 Engine将爬取请求发送给Scheduler

Engine控制各模块数据流,不间断从Scheduler处
获得爬取请求,直至请求为空
框架入口:Spider的初始爬取请求
框架出口:Item Pipeline

Engine                                                                              
(1) 控制所有模块之间的数据流
(2) 根据条件触发事件
不需要用户修改

Downloader
根据请求下载网页
不需要用户修改

Scheduler
对所有爬取请求进行调度管理
不需要用户修改

Downloader Middleware
目的:实施Engine、Scheduler和Downloader
之间进行用户可配置的控制
功能:修改、丢弃、新增请求或响应
用户可以编写配置代码

Spider
(1) 解析Downloader返回的响应(Response)
(2) 产生爬取项(scraped item)
(3) 产生额外的爬取请求(Request)
需要用户编写配置代码

Item Pipelines
(1) 以流水线方式处理Spider产生的爬取项
(2) 由一组操作顺序组成,类似流水线,每个操
作是一个Item Pipeline类型
(3) 可能操作包括:清理、检验和查重爬取项中
的HTML数据、将数据存储到数据库
需要用户编写配置代码

了解了基本概念之后我们开始写第一个scrapy爬虫吧。

首先要新建一个爬虫项目scrapy startproject xxx(项目名)

这个爬虫就简单的爬取一个小说网站的书名与作者吧。

我们现在创建了爬虫项目book现在来编辑他的配置

二级book目录下这些就是配置文件上面已经介绍过了,在修改这些之前

我们现在一级book目录下创建一个start.py 来用于scrapy爬虫能在IDE里

面运行。文件里面写下如下代码。

前两个参数是固定的,第三个参数是你spider的名字

接下来我们就在items里面填写字段:

然后在spider中创建爬虫主程序book.py

我们要爬取的网站为http://book.km.com/

通过点击网站不同种类小说会发现网站地址是http://book.km.com/+小说种类拼音.html

通过这个我们来写读取网页的内容

得到这个之后我们通过parse 函数来解析所获取的网页并提取所需信息。

网页分析提取数据是通过BeautifulSoup库来的,这里就略了。自己分析2333~

程序写好我们要存储所爬取的信息就要编辑Pipelines.py 了

这里提供两个保存方式

1保存为txt文本

2 存入数据库

要让这个成功运行我们还需要在setting.py中配置

ITEM_PIPELINES = {    'book.pipelines.xxx': 300,}xxx为存储方法的类名,想用什么方法存储就改成那个名字就好运行结果没什么看头就略了第一个爬虫框架就这样啦期末忙没时间继续完善这个爬虫之后有时间将这个爬虫完善成把小说内容等一起爬下来的程序再来分享一波。附一个book的完整代码:
import scrapy
from bs4 import BeautifulSoup
from book.items import BookItemclass Bookspider(scrapy.Spider):name = 'book'   #名字allowed_domains = ['book.km.com']  #包含了spider允许爬取的域名(domain)列表(list)zurl='http://book.km.com/'def start_requests(self):D=['jushi','xuanhuan'] #数组里面包含了小说种类这里列举两个有需要可以自己添加for i in D: #通过循环遍历url=self.zurl+i+'.html'yield scrapy.Request(url, callback=self.parse)def parse(self, response):imf=BeautifulSoup(response.text,'lxml')b=imf.find_all('dl',class_='info')for i in b:bookname=i.a.stringauthor = i.dd.span.stringitem = BookItem()item['name'] = booknameitem['author'] = authoryield item

 

转载于:https://www.cnblogs.com/franklv/p/7041015.html

一个咸鱼的python爬虫之路(五):scrapy 爬虫框架相关推荐

  1. python学习(三)scrapy爬虫框架(二)——创建一个scrapy爬虫

    在创建新的scrapy爬虫之前,我们需要先了解一下创建一个scrapy爬虫的基本步骤 第一步:确定要爬取的数据 以爬取豆瓣电影数据为例: 每部电影所要爬取的信息有: 片名:<头号玩家> 导 ...

  2. python的scrapy爬虫模块间进行传参_小猪的Python学习之旅 —— 4.Scrapy爬虫框架初体验...

    小猪的Python学习之旅 -- 4.Scrapy爬虫框架初体验 Python 引言: 经过前面两节的学习,我们学会了使用urllib去模拟请求,使用 Beautiful Soup和正则表达式来处理网 ...

  3. [python爬虫之路day19:] scrapy框架初入门day1——爬取百思不得姐段子

    好久没学习爬虫了,今天再来记录一篇我的初入门scrapy. 首先scrapy是针对大型数据的爬取,简单便捷,但是需要操作多个文件以下介绍: 写一个爬虫,需要做很多的事情.比如: 发送网络请求, 数据解 ...

  4. Python爬虫深造篇(四)——Scrapy爬虫框架启动一个真正的项目

    一.前情提要 经过前面的学习,我们初识了 Scrapy 框架,通过 Scrapy 提供的互动工具,我们在命令行中体验了 Scrapy 中的 CSS 选择器 最重要的几个点是:. 代表 class,# ...

  5. python创建scrapy_Python爬虫教程-31-创建 Scrapy 爬虫框架项目

    首先说一下,本篇是在 Anaconda 环境下,所以如果没有安装 Anaconda 请先到官网下载安装 Scrapy 爬虫框架项目的创建0.打开[cmd] 1.进入你要使用的 Anaconda 环境1 ...

  6. linux scrapy 定时任务_2019Python学习教程(全套Python学习视频):Scrapy爬虫框架入门...

    Scrapy爬虫框架入门 Scrapy概述 Scrapy是Python开发的一个非常流行的网络爬虫框架,可以用来抓取Web站点并从页面中提取结构化的数据,被广泛的用于数据挖掘.数据监测和自动化测试等领 ...

  7. 阿里云后台运行python程序(后台运行scrapy爬虫)的方法

    1. 问题引入 通过Xshell工具连接远程阿里云服务器后,如何运行python程序呢?这个大家都知道,python命令啦. 举个栗子:通过Xshell在某个目录下输入命令:python test.p ...

  8. Python爬虫基础:安装Scrapy爬虫框架和创建Scrapy爬虫项目

    首先为了避免国外镜像不稳定,我们使用了清华大学的python库镜像:https://pypi.tuna.tsinghua.edu.cn/simple 1.安装scrapy 1.1.安装pywin32( ...

  9. Python网络爬虫之requests库Scrapy爬虫比较

    requests库Scrapy爬虫比较 相同点: 都可以进行页面请求和爬取,Python爬虫的两个重要技术路线 两者可用性都好,文档丰富,入门简单. 两者都没有处理JS,提交表单,应对验证码等功能(可 ...

最新文章

  1. maven排除依赖包的子依赖_漫画谈一下Maven依赖
  2. OpenYurt — Yurtctl
  3. Cloud for Customer的主页加载逻辑
  4. HALCON示例程序classify_image_class_knn.hdev使用KNN分类器对多通道图像进行分割
  5. [数字信号处理学习篇] FIR 滤波器基础(一)
  6. Interfaces for Music音乐界面——翻译
  7. python 类和对象的实例简介
  8. html css 浏览器 响应式 面试题持续更新!
  9. 红帽linux性能参数,红帽企业版Linux6性能调节指引.PDF
  10. 生成 8 / 16 / 32 位的UUID
  11. dell Precision 3550 更换固态硬盘
  12. prometheus+alertmanager+webhook实现自定义监控报警系统
  13. 浏览器无痕浏览还能查到记录吗,如何开启无痕模式
  14. 全国英语计算机等级考试报名费,通知 | 全国大学生英语竞赛计算机等级考试报名...
  15. 为什么双赞安卓ARM工控主板应用前景那么好?
  16. 梁宁《产品思维》之27颠覆式创新
  17. 用户sa登陆失败时,应该如何解决
  18. 软考专题模块:2014年下半年软件设计师考试上午试题
  19. 浙江师范的计算机专业的排名2015,浙江师范大学计算机科学与技术研究生专业排名...
  20. 自适应模糊控制——间接自适应模糊控制

热门文章

  1. 汇编指令和机器码的对应表
  2. 一文搞定Spring及IOC,给你总结的清新脱俗!
  3. 语音识别芯片工作原理,哪款离线语音芯片值得尝试?WTK6900H
  4. 利用Censys批量获取Juniper Netscreen后门
  5. 小米android核心应用程序,小米系统 应用入口之争的另一种思路
  6. pythonprint结果_Python语句print(type((1,2,3,4)))的输出结果是()
  7. 游戏开发术语(1): 渠道包 / 渠道 / 抓包 ?
  8. 消息队列之延迟队列超详细入门教程速看
  9. SVM模型的深入理解与运用(Python与C#实现)
  10. 地震真的不可预测吗?