爬虫进阶 之 Scrapy 框架 1(实例: 爬取ITcast 的教师信息)
Scrapy
- 什么是Scrapy
- 简介
- Scrapy 架构
- 使用Scrapy
- 爬取 ITcast
什么是Scrapy
简介
Scrapy是适用于Python的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改,它也提供了多种类型爬虫的基类。
Scrapy 架构
- Scrapy 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中间通信的功能组件。
这里有个大佬写的趣味小故事,帮助理解
1.引擎:Hi!Spider, 你要处理哪一个网站?2.Spider:老大要我处理xxxx.com。 (老大就是我们吖)3.引擎:你把第一个需要处理的URL给我吧。4.Spider:给你,第一个URL是xxxxxxx.com。5.引擎:Hi!调度器,我这有request请求你帮我排序入队一下。6.调度器:好的,正在处理你等一下。7.引擎:Hi!调度器,把你处理好的request请求给我。8.调度器:给你,这是我处理好的request9.引擎:Hi!下载器,你按照老大的下载中间件的设置帮我下载一下这个request请求10.下载器:好的!给你,这是下载好的东西。(如果失败:sorry,这个request下载失败了。然后引擎告诉调度器,这个request下载失败了,你记录一下,我们待会儿再下载)11.引擎:Hi!Spider,这是下载好的东西,并且已经按照老大的下载中间件处理过了,你自己处理一下(注意!这儿responses默认是交给def parse()这个函数处理的)12.Spider:(处理完毕数据之后对于需要跟进的URL),Hi!引擎,我这里有两个结果,这个是我需要跟进的URL,还有这个是我获取到的Item数据。13.引擎:Hi !管道 我这儿有个item你帮我处理一下!调度器!这是需要跟进URL你帮我处理下。然后从第四步开始循环,直到获取完老大需要全部信息。
14.管道“调度器:好的,现在就做
使用Scrapy
首先要安装
windows 上面就 Scrapy pip install Scrapy
以防万一再安装一个 pip install pupiwin32
否则有的电脑运行会报错,如果没有报错就没有必要安装 了
Linux 可以参考 Scrapy 官网 或者 Scrapy中文文档 安装
打开cmd 输入 scrapy
出现下图就是安装好了,有兴趣 的可以试试 Scrapy 的命令。
下面开始使用吧
我们要创建一个项目,还记的刚才那个图里的 startproject
命令吗
首先找一个喜欢的位置打开开cmd,在cmd中运行 scrapy startproject [项目名称]
比如我这里是 scrapy startproject ITcast
(因为一会实例是 ITcast 就用这个做名字了
运行完后,会在 刚才你喜欢的位置 里创建用项目名称命名的一个文件夹,里面有一个scrapy 配置文件scrapy.cfg ,还有一个用项目名称命名的文夹
我们看看整体结构,看图图
- items.py 存储爬取数据的模型
- middlewares.py 中间键
- pipelines.py 处理爬取的数据
- settings.py 配置爬虫,是不是延迟,cookie,请求等
- spiders 放我们的爬虫文件
下面 我们就来使用一下Scrapy 吧
爬取 ITcast
这个就是我们爬取的网站ITcas
首先在 spiders 文件夹里创建好我们的爬虫文件,当然不是我们手动创建
进入spiders 这个文件夹,执行scrapy genspider [爬虫名字] "域名"
这就创建了我们的爬虫。
例如:我这里
D:\ITcast\ITcast>cd spiders
D:\ITcast\ITcast\spiders>scrapy genspider itcast “itcast.cn”
域名表示的是以后爬取的数据都是 itcast 这个主机下面的页面,如果又其他的就不管,就是域名的范围
注意,爬虫的名字不能和项目的名字相同
执行完后spiders 里就会有对应的 .py 文件
打开它我们会看到和下面这个图差不多的东东,我加了注释。这是自动生成的类
在开始写爬虫之前,我们还需要修改一下爬虫的配置文件 setting.py
找到图中的两个地方进行修改
这里 robot协议 我们是不去遵守的,如果遵守可能许多数据都爬取不到,所以我们改为False
请求头部我们之前的接触过,这里我们取消注释,添加 User-Agent 字段来伪装自己
我用的是这个,不同的浏览器不一样'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
好了,下面我们就可以写爬虫了,
我们把要爬取的地址 放在 start_urls
那个列表里,在解析的部分先改动一下,打印 response
看看
在现在的项目 目录下 再次 执行 Scrapy
我们看到了和第一次执行 Scrapy不同的命令,
所以我们执行这个crawl
命令 来运行我们的爬虫 格式是scrapy crawl [爬虫名字]
例如:这里爬虫叫 itcast 所以我们执行 scrapy crawl itcast
注意是爬虫名字,不是 itcost.py
我们发现,我们什么都没有写,就已经得到了这个页面,所以接下来我们要做的就是解析这个页面
Scrapy 里 xpath 还是蛮好用的,所以这里我就用xpath 解析了,在之前的入门博文里已经 讲解过xpath 的使用,如果之前没有看过我博客的小伙伴或者忘了的朋友可以戳 爬虫入门之xapth 来回忆一下,这里就不多说了。直接看图:
我们分别解析每个老师的信息,然后存入字典中,并把所有老师的信息放在列表里,最后写入csv中。
# -*- coding: utf-8 -*-
import scrapyclass ItcastSpider(scrapy.Spider):name = 'itcast'allowed_domains = ['itcast.cn'] # 这个里面没有http这些东西,直接写后面的主机# 爬虫的第一个请求就是这里面的start_urls = ['http://www.itcast.cn/channel/teacher.shtml#apython']def parse(self, response): # 这个是解析的部分,默认执行这个解析# 保存老师信息的列表Items = []teacherlist = response.xpath("//div[@class='li_txt']") # 用xpath 解析到 每个老师的div 再遍历解析 得到每个老师的具体信息for t in teacherlist: item = {}# extract 返回的是一个unicode 字符串,如果不用这个方法,返回的还是一个xpath类,里面有个data是数据.name = t.xpath("./h3/text()").extract()title = t.xpath("./h4/text()").extract()info = t.xpath("./p/text()").extract()# 放入字典中item["name"] = nameitem["title"] = titleitem["info"] = info# 放入列表Items.append(item)print("1111111111111111111111111111111111111111111111111111111111111111111111111111111") # 为了方便看打印个分隔线 哈哈哈哈#print(Items) # 打印出来看看return Items
在这个爬虫里return后,就相当于返回给了引擎,然后引擎会给下载器
所以下一步我们只需要在项目位置打开cmd 执行 scrapy crawl itcast -o teacher.csv
就可以保存在 csv文件中。
打开看看
如果出现了乱码,那是因为windows 默认的是gbk 编码,我们只要打开之前的setting.py 来设置一下写入的编码,把这句话加在setting文件中 FEED_EXPORT_ENCODING = 'gb18030'
再次运行就好了。
当然这只是其中的一种简单,粗糙的方法,会看到表格也不整齐,所以下次我们还会继续学习有关Scrapy 的内容,管道 & ITcast 实例的完善
我又来要赞了,还是希望各位路过的朋友,如果觉得可以学到些什么的话,点个赞再走吧,欢迎各位路过的大佬评论,指正错误,也欢迎有问题的小伙伴评论留言,私信。每个小伙伴的关注都是我更博的动力》》》》奥里给
爬虫进阶 之 Scrapy 框架 1(实例: 爬取ITcast 的教师信息)相关推荐
- scrapy框架入门(爬取itcast实例)
一.简介 官方文档 crapy Engine(引擎): 负责Spider.ItemPipeline.Downloader.Scheduler中间的通讯,信号.数据传递等. Scheduler(调度器) ...
- 【Python】Scrapy爬虫框架小试牛刀:爬取某论坛招聘信息
Scrapy爬虫框架小试牛刀:爬取某论坛招聘信息 背景 Scrapy工作原理 创建项目 创建爬虫 确定数据爬取思路 编写对象:item.py 制作爬虫:muchongrecruit.py 存储内容:p ...
- Scrapy框架+Gerapy分布式爬取海外网文章
Scrapy框架+Gerapy分布式爬取海外网文章 前言 一.Scrapy和Gerapy是什么? 1.Scrapy概述 2.Scrapy五大基本构成: 3.建立爬虫项目整体架构图 4.Gerapy概述 ...
- 使用python的scrapy框架简单的爬取豆瓣读书top250
使用python的scrapy框架简单的爬取豆瓣读书top250 一.配置scrapy环境 1. 配置相应模块 如果没有配置过scrapy环境的一般需要安装lxml.PyOpenssl.Twisted ...
- Python爬虫实战使用scrapy与selenium来爬取数据
系列文章目录 实战使用scrapy与selenium来爬取数据 文章目录 系列文章目录 前言 一.前期准备 二.思路与运行程序 1.思路 2.运行程序 三.代码 1.代码下载 2.部分代码 总结 前言 ...
- (转)python爬虫实例——爬取智联招聘信息
受友人所托,写了一个爬取智联招聘信息的爬虫,与大家分享. 本文将介绍如何实现该爬虫. 目录 网页分析 实现代码分析 结果 总结 github代码地址 网页分析 以https://xiaoyuan.zh ...
- python爬虫实例——爬取智联招聘信息
受友人所托,写了一个爬取智联招聘信息的爬虫,与大家分享. 本文将介绍如何实现该爬虫. 目录 网页分析 实现代码分析 结果 总结 github代码地址 网页分析 以https://xiaoyuan.zh ...
- 爬虫利器Pyppeteer的介绍和使用 爬取京东商城书籍信息
提起 selenium 想必大家都不陌生,作为一款知名的 Web 自动化测试框架,selenium 支持多款主流浏览器,提供了功能丰富的API 接口,经常被我们用作爬虫工具来使用.但是 seleniu ...
- 爬虫利器Pyppeteer的介绍和使用 爬取京东商城书籍信息!
提起 selenium 想必大家都不陌生,作为一款知名的 Web 自动化测试框架,selenium 支持多款主流浏览器,提供了功能丰富的API 接口,经常被我们用作爬虫工具来使用.但是 seleniu ...
最新文章
- Oracle Grid Control 10.2.0.5 for Linux 安装和配置指南
- Python Socket请求网站获取数据
- 网闸与防火墙的区别是什么
- CGContextRef学习笔记
- linux cp命令使用
- 第三期CSIG图像图形学科前沿讲习班-详细日程
- websockets_使用用户名/密码和Servlet安全性保护WebSockets
- 脸书令牌怎么使用_网工知识角|QOS技术令牌桶算法一分钟速记,考试无忧
- php7 字符串,php7 参数、整形及字符串处理机制修改实例分析
- python-opencv图像处理之SIFT尺度不变特征变换
- 【读书笔记0103】Beginning linux programming-shell programming
- Stamp Rally
- JavaScript中的call,apply,bind学习总结
- 一篇文章玩转世界最强音乐Spotify API操作
- 【python】通讯录制作
- apa引用要在文中吗_【019】写作格式 | APA 7th style 引用格式
- 如何从初级程序员到中级程序员
- 南理ARPG游戏深度学习One
- 第二天-03-安卓手机的入侵实验
- SAP采购业务发票校验和后继凭证关联与参考码逻辑关系
热门文章
- 演讲干货 | 招聘版「狼人杀」详解,企业面试提效增速神器
- 假面科技披露赌博处理情况 狼人杀APP反赌系统将持续开发
- 关于涉密信息系统集成资质证书到期应注意的事项
- 互联网广告之教育行业2019年数据分析及预估
- 【计算机程序设计思想与方法】2 什么是计算思维?
- SGISTL源码探究-stl_alog.h中的二分查找算法
- 一款功能强大的数据恢复软件合集,不进来看看?
- 厘米级RTK定位产品,支持单模块双天线定向,原生支持Ardupilot固件
- dll文件丢失解决方案
- CCN.002,CCN.003,CCN.004插装阀整流插头