摘要:快速入门首先,初步要做的就是快速构建一个爬虫。然后把结果加入到一个队列中。既然是入门,我们肯定是先关心我们需要的。
因为公司项目需求,需要做一个爬虫。所以我一个python小白就被拉去做了爬虫。花了两周时间,拼拼凑凑总算赶出来了。所以写个blog做个记录。快速入门
首先,初步要做的就是快速构建一个爬虫。
配置环境 Mac下安装1) 直接从官网下载
python下载官网
2) 是通过brew安装
首先安装xcode
可以选择在App Store安装或者使用xcode-select --install这个命令安装
接着安装brew
usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
把这个命令输入终端运行就可以安装了
brew官网
接着利用brew安装python3
brew install python3
安装完python3以后,我们来装scrapy。因为python3是自带pip3的,
所以如果找不到该命令的话,可以去看看python3的安装路径。brew是将其安装在了usrlocalin这个目录下。
如果pip没安装上的话,不要慌。我们还可以通过命令来安装
curl -O https://bootstrap.pypa.io/get-pip.py python3 get-pip.py
接下来安装scrapy
输入命令pip3 install Scrapy就可以了
首先从官网上下载msi文件
在安装选项中勾选上需要pip
然后在cmd中输入
pip3 install Scrapy
完成
Linux安装sudo get-apt install python36 python36-devel gcc sudo pip3 install Scrapy
两条命令就搞定了。
因为我的爬虫是跑在docker上,有些镜像可能没有gcc。所以需要devel和gcc,否则有些包会安不上。切记
Redhat系的话,只需要把get-apt改成yum就可以了
建立项目 scrapy startproject demo
建立爬虫 scrapy genspider demo_spider www.google.com
启动爬虫 scrapy crwal demo_spider
当你建立完项目的时候,scrapy会帮你生成一堆文件。
目录结构是这样的
在你的demo项目中,会有个scrapy.cfg的配置文件和一个demo的文件夹
scrapy.cfg这个文件我们先暂时不去关心。我们来关心一下demo文件夹下的东西
分别是items.py,middlewares.py,pipelines.py,settings.py和一个spiders文件夹。
接着我们去spiders目录下去创建一个爬虫scrapy genspider demo_spider www.google.com
OK,爬虫生成功了。
我们来初步解析一下这个爬虫。
有一个DemoSpiderSpider的类。很明显,这个是我们刚才生成爬虫的名字为demo_spider然后后面又添加了一个Spider。
接着往下看,有个name的属性,这个属性很重要,我们到时候启动爬虫的时候,就要通过这个name来告知scarpy启动的是哪个爬虫
allowed_demains是用来指定,我们只爬取哪些域名下的。比如说,我在爬取google的搜索结果的时候,会爬到很多别的网站,这个属性就是用来告知,除了www.google.com以外的,我都不爬取。
start_urls是用来做启动url,看命名就知道了。可以把Scrapy的爬取过程看成一个广度搜索。所以它会先迅速把start_urls下的所有url都爬取一遍。然后把结果加入到一个队列中。也是因为这个原因,所以在做并发爬虫时,会让不同的爬虫的start_urls不一样。当然还有重复的问题要解决(笑)
接下来就是parse方法了,我们对页面的爬取也是在这个parse中解决
初步理解了spider,我们往外层走。
我们首先来假想几个问题,如果我是Scrapy框架的设计者,我会这么设计这个框架。
既然是通用的爬虫框架,那用户是不是应该可以操作header之类的,让我的每一个爬虫都经过代理,或者是设置不同的cookie。
当当当,所以就有了中间件。middlewares.py
我们来看看Scrapy生成的是什么样的。
既然是入门,我们肯定是先关心我们需要的。看第二张图。有这么几个干方法process_request,process_response,process_exception
处理request,response,exception。很好,我们就要这几个东西。
我们可以这么理解,我们的爬虫爬到的每一个页面,都会经过这些中间件。
来看看架构图
所以我们的数据是经过每一个中间件。然后中间件来决定去留。
然后我们来想想具体process_request下的情况。
第一种,我修改了代理,但是我只是改了代理,我还需要把这个数据继续下去。返回None
第二种,这个已经处理好了,现在我需要想直接把数据发给spider了,这个时候,我们就需要返回一个response了。
第三种,我想要重新调度我的request.这时候只要返回request。调度器会终止process_request,然后用这个request重新开始。
第四种,这个数据我直接丢弃了,不想用了。直接raise一个IgnoreRequest,也就是,如果你不处理这个异常,这异常就直接扔了。当然,你还可以选择在process_exception去处理这个异常
Python爬虫从入门到放弃(十七)之 Scrapy框架中Download Middleware用法
初步理解了中间件,我们来说说items
在spider处理完数据以后,写入item中,然后就来到了这儿。
scrapy生成的代码
怎么用呢。举个例子,我在spider中需要存储url。于是我在这个文件中就写入
url = scrapy.Field
接着在spider中生成这个item。然后将item["url"] = url,在处理完了以后。yield item
完成
这个数据呢,就会交给pipelines来处理
接着,我们来看看pipelines
我们和刚才一样,思考一下,数据拿过来有几种可能。
数据不是我的,我不处理。OK,我直接返回itme
数据是我的,但是数据错了。扔掉。raise一个DropItem就可以了
这边呢,如果要写入数据库,玩玩写入的时间特别长,所以推荐使用Twisted来做一个异步写入
最后。我们来看看settings
配置文件,比如是否遵守robots.txt之类的。当然,你刚才写的所有middlewares,pipelines。都要在这儿注册!!!!随便给它一个不重复的数字就好了
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/42263.html
摘要:快速入门接上篇学习一安装,安装后,我们利用一个简单的例子来熟悉如何使用创建一个爬虫项目。创建一个项目在已配置好的环境下输入系统将在当前目录生成一个的项目文件。这部分才是业务的核心部分。提取的方式有几种。具体代码详见入门项目 快速入门 接上篇Scrapy学习(一) 安装,安装后,我们利用一个简单的例子来熟悉如何使用Scrapy创建一个爬虫项目。 创建一个Scrapy项目 在已配置好的环境...
摘要:一基础环境由于不是职业的开发者,因此环境是基于的。二安装打开命令行工具创建虚拟环境,默认情况下会创建目录,所有的虚拟环境都会产生一个子目录保存在此,里面包含基本程序文件以及库文件。 目录 基于 Python 的 Scrapy 爬虫入门:环境搭建 基于 Python 的 Scrapy 爬虫入门:页面提取 基于 Python 的 Scrapy 爬虫入门:图片处理 作为一个全栈工程师(...
摘要:本文大部分内容摘抄自官网的,看到巧妙之处则加了点评。,接下来的工作至此,框架已经明确选定了,接下来,我们将进一步研读的文档,研究怎样把的封装成需要的。,文档修改历史,首次发布 showImg(https://segmentfault.com/img/bVx6ZU); 1,引言 在《Scrapy的架构初探》一文,我基于爬虫开发的经验对Scrapy官网文章作了点评和解读,事件驱动的异步处理...
摘要:本文内容爬取豆瓣电影页面内容,字段包含排名,片名,导演,一句话描述有的为空,评分,评价人数,上映时间,上映国家,类别抓取数据存储介绍爬虫框架教程一入门创建项目创建爬虫注意,爬虫名不能和项目名一样应对反爬策略的配置打开文件,将修改为。 本文内容 爬取豆瓣电影Top250页面内容,字段包含:排名,片名,导演,一句话描述 有的为空,评分,评价人数,上映时间,上映国家,类别 抓取数据存储 ...
摘要:本文基于,平台完整项目代码安装安装官网下载注意环境变量是否配置成功安装为了安装顺利,请备好梯子安装过程中注意以下报错信息解决办法下载对应版本的文件表示版本表示位下载后在文件目录下执行文件名创建项目创建创建在项目跟目录执行配置文件 本文基于python 3.7.0,win10平台; 2018-08完整项目代码:https://github.com/NameHewei/python-scr...
阅读 2944·2023-04-25 19:45
阅读 2657·2021-11-19 09:40
阅读 670·2021-10-14 09:49
阅读 2599·2021-09-30 09:47
阅读 2137·2021-09-26 09:55
阅读 1171·2021-09-22 16:01
阅读 2790·2019-08-30 14:19
阅读 685·2019-08-29 16:44