一、简介

官方文档

crapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。

Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。

Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,

Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器),

Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.

Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。

Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)

流程:
①爬虫文件spiders给出一个URL
②engine收到URL给scheduler,再返回engine
③engine收到给downloader下载数据,完成后返回engine
④engine将数据响应给spider,进行初步解析,然后返回engine
⑤engine交给Item Pipeline进行保存,比如数据库

二、安装
1,安装scrapy:cmd–>conda install scrapy(或在pycharm里引入scrapy)
2,新建文件:!不能pycharm新建文件,只能cmd!
进入想要放置的目录,然后scrapy startproject myScrapy
然后在pycharm里用open打开

3,创建爬虫
cmd进入myscrapy文件夹:scrapy genspider itcast itcact.cn
(itcast是爬虫名 itcast.cn是爬取域)

spiders文件夹里会出现itcast.py


需要编写:
itcast.py
items.py
pipelines.py
三、爬取itcast网站 http://www.itcast.cn/channel/teacher.shtml
详细代码

运行:!不是直接在pycharm里run,用cmd!
进入scrapy.cfg所在的myscrapy文件夹(和创建爬虫时一样)
输入:scrapy crawl itcast(爬虫名)

import scrapyclass ItcastSpider(scrapy.Spider):name = 'itcast'#爬虫名allowed_domains = ['itcast.cn']#允许爬取的范围start_urls = ['http://www.itcast.cn/channel/teacher.shtml']#最开始的urldef parse(self, response):#必须有一个parse方法处理start_urls,不能改名node_list = response.xpath("//div[@class='li_txt']")# 用来存储所有的item字段的items = []for node in node_list:# 创建item字段对象,用来存储信息# .extract()将xpath对象转化成Unicode字符串item={}name = node.xpath("./h3/text()").extract()title = node.xpath("./h4/text()").extract()info = node.xpath("./p/text()").extract()#print(name[0])#print(title[0])#print(info[0])item['name'] = name[0]item['title'] = title[0]item['info'] = info[0]#print(item)yield item #返回给pipeline,只能返回request、baseitem、dict、none,不能返回列表# return item  # 给管道# return scrapy.Request(url)  # 给scheduleritems.append(item)return items

注意:返回给pipelines需要在settings里取消注释

然后在pipelines文件夹里print出来

class MyscrapyPipeline(object):def process_item(self, item, spider):#和parse一样,不能改名item["hello"]="world"print(item)#接受itcast.py的yield然后打印return item


四、运行
还可以在当前目录新建一个debug.py文件,运行即可

from scrapy.cmdline import executeexecute('scrapy crawl scrapyd'.split())

五、补充
1、piplines文件可以有多个管道

需要在settings文件里设置:

如果print出来item字典里出现“hello”这个键值,则说明先经过数字小的pipline,再经过pipline1

2、一个项目里同时爬取多个网站itcast1、itcast2、itcast3
法一:在parse里给item添加一个键

def parse(self, response):item={}item{"come_from"}=itcast1

然后再pipelines文件里选择

class TestscrapyPipeline(object):def process_item(self, item, spider):if item["come_from"]==itcast1:..elif....return item

法二:利用pipelines里process_item里的spider类的默认名字

class TestscrapyPipeline(object):def process_item(self, item, spider):if spider.name==itcast1:..elif....return item

3、避免输出过多日志文件
可以在settings文件里加一句

LOG_LEVEL="WARNING"#比warning小的日志都不会输出
LOG_FILE="./log.log"#在当前路径下保存日志


使用logger方便从日志找出爬虫出错的文件

# -*- coding: utf-8 -*-
import scrapy
import logging
logger=logging.getLogger(__name__)#显示日志出错的名字
class ExampleSpider(scrapy.Spider):name = 'example'allowed_domains = ['itcast.cn']start_urls = ['http://www.itcast.cn./']def parse(self, response):for i in range (10):item={}item["come_from"]="example"logger.warning(item)#类似printpass

scrapy框架入门(爬取itcast实例)相关推荐

  1. 手把手教你使用scrapy框架来爬取北京新发地价格行情(理论篇)

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 博观而约取,厚积而薄发. 大家好! ...

  2. 使用python3.7中的scrapy框架,爬取起点小说

    这几天在学习scrapy框架,感觉有所收获,便尝试使用scrapy框架来爬取一些数据,对自己阶段性学习进行一个小小的总结 本次爬取的目标数据是起点中文网中的免费作品部分,如下图: 本次一共爬取了100 ...

  3. 使用Scrapy框架,爬取b站番剧信息。

    使用Scrapy框架,爬取b站番剧信息. 感觉好久没写爬虫的,今天看了在b站浏览了一会儿,发现b站有很多东西可以爬取的,比如首页的排行榜,番剧感觉很容易找到数据来源的,所以就拿主页的番剧来练练手的. ...

  4. Python爬虫之运用scrapy框架将爬取的内容存入文件和数据库

    文章目录 前言 源码 爬虫文件(test1) pipelines.py setting.py 运行结果 前言 主要运用了scrapy持久化存储操作,下面主要展示spider和管道文件及一些设置. 源码 ...

  5. scrapy简单入门 - 爬取伯乐在线所有文章

    推荐我的个人博客 http://blog.wuzhenyu.com.cn scrapy 是一个用 python 语言编写的,为了爬取网站数据,提取结构性数据而编写的应用框架. 环境 本文使用的环境: ...

  6. Scrapy框架学习 - 爬取豆瓣电影排行榜TOP250所有电影信息并保存到MongoDB数据库中

    概述 利用Scrapy爬取豆瓣电影Top250排行榜电影信息,并保存到MongoDB数据库中 使用pymongo库操作MOngodb数据库 没有进行数据清洗 源码 items.py class Dou ...

  7. python scrapy爬虫电影_Python爬虫Scrapy框架(2) -- 爬取优酷电影进阶

    爬取更多的items,例如名字,主演,播放次数,电影海报,并进行多页爬取. items.py 1 importscrapy2 3 classYoukumoiveItem(scrapy.Item):4 ...

  8. 使用scrapy框架从爬取安居客数据到分析

    一.爬取数据 使用scrapy,不多说,上码 1.spider import scrapyfrom lianjia.items import anjukeItemclass AnjukeSpider( ...

  9. 【Python爬虫系列教程 31-100】通过scrapy框架、爬取汽车之家宝马5系图片,学习Images管道

    现在爬取的汽车之家宝马5系车的图片,可以看到在这个网址里面,放了车的不同部位的图片,下面就要将他们爬下来并且保存到不同的文件夹. 首先用到的是pycharm IDE,这个软件可以提高编写代码的效率,因 ...

最新文章

  1. Spring Cloud中Hystrix仪表盘与Turbine集群监控
  2. Unity3D 集成 Face++ FacePlusPlus httpClient http协议 byte数组转string
  3. 学术造假?撤销职称!不端“黑历史”将影响未来评审
  4. Git笔记(3) 安装配置
  5. ext.net 2.5 导出excel的使用方法
  6. macOS “不能安装该软件,因为当前无法从软件更新服务器获得” 解决方法
  7. 智慧树源码_智慧树怎么查看网站源代码答案
  8. Spark基础练习题(RDD)
  9. HMM, CTC和RNN-Transducer对齐方式的差异
  10. JavaScript 【99乘法表】【案例】
  11. android 系统重新安装程序,Android应用程序更新时的安装与卸载(调用系统方法)...
  12. Python爬取URP教务系统课程表并保存到excel
  13. 如何实现自定义主题切换?
  14. register while current state is RESUMED. LifecycleOwners must call register before they are STARTED.
  15. 3dsmax2020安装教程
  16. 赋权边覆盖问题——采用禁忌搜索算法的C++实现
  17. 解决STM32F0/F1内部FLASH写操作导致中断程序无法响应的问题
  18. [Ionic]如何实现一个全局的浮动菜单栏?
  19. DataTable 与 datagrid控件
  20. 用成品短视频App源码开发您的下一个创意项目

热门文章

  1. mysql几核几G是什么意思_Linux下查看操作系统信息、内存情况及cpu信息:cpu个数、核心数、线程数...
  2. Windows服务器加固
  3. 【嵌入式】单片机,FPGA,CPLD,PLC,DSP之间的关系与区别
  4. 基于单片机的简易数字电压表设计(电路+程序)
  5. 基于51单片机的数字电压表c语言程序,基于AT89C51单片机的直流数字电压表设计毕业论文+任务书+Proteus代码+电路图+源码...
  6. 简单AStar寻路2D示例
  7. ubuntu命令 图片 壁纸_25. Ubuntu15.04系统中壁纸切换
  8. 机器人离线编程画圆误差解决方案_机器人离线编程技术浅析及未来展望
  9. D3D中的网格(Mesh)
  10. 又是一年年关至,往事历历在心头