scrapy
1.安装scrapy 1.5.0pip3 install Scrapy安装需要的软件pip3 install Pillow
2.创建scrapy的软链接ln -s /usr/local/python3/bin/scrapy /usr/bin/scrapy
--------------------------------------创建新项目Linux命令行输入 /root/scrapy/test1#scrapy startproject test1
---------------------------------------------------------------执行爬虫scrapy crawl 爬虫名#爬虫名就是spiders文件夹下py文件名scrapy crawl 爬虫名 -o 存储文件名.json#存储文件支持json,csv,xml格式
----------------------------------------------test1/scrapy.cfgtest1/__init__.pyitems.pymiddlewares.pypipelines.pysettings.pyspiders/__init__.pyexample.py...scrapy.cfg:项目的配置文件test1:项目的python模块,在此文件夹下加入代码
items.py定义了爬取到的数据的格式Item:保存爬取到的数据的容器将数据封装为一个Item类,然后对Item类进行操作
middlewares.py爬取网页的网络请求和响应都会经过middlewares.py进行处理,可以做一些个性化的操作,比如设置用户代理,设置代理IP等Scrapy自带的middleware可以分为spider middleware(处理网页请求)和downloader middleware(处理网络响应)两类, 我们也可以自定义 middleware 类。
pipelines.py爬取网页后解析生成的Item类会被传递到这里进行存储解析等操作。scrapy提供了许多有用的Pipeline类来处理数据,也可以自定义Pipeline类进行处理
item pipeline的典型应用:.清理HTML数据.验证爬取的数据(检查item包含某些字段).查重(并丢弃).将爬取结果保存到数据库中
settings.py设定项目的配置文件,比如设置请求和响应的中间层,指定操作数据的Pipeline类等提供了定制scrapy组件的方法。可以控制包括核心(core),插件(extension),pipeline以及spider组件。为代码提供了提取以key-value映射的配置值的全局命名空间(namespace)同时也是选择当前激活的scrapy项目的方法(如果有多个scrapy项目的话)
spiders/爬虫的包。创建的爬虫文件都会自动生成在该文件夹下。
Spiders:用于从网站爬取数据的类。定义三个属性:name,唯一性;start_urls;parse()Scrapy将start_urls中的url作为起始路径进行爬取def start_requests(self):指定起始请求,生成一个scrapy.Request()请求对象def parse(self,reponse):默认的解析方法,可以自己定义其他解析方法解析对应的请求
------------------------------------------------------------爬取过程:scrapy 将 start_urls 中的 url 作为起始路径进行爬取。除此之外我们可以重写 Scrapy 提供的 start_requests() 方法来发送 scrapy.Request 请求自行设定。爬取成功后会将 response 对象传递到我们指定的解析方法中进行解析,这样一个爬虫就创建运行成功了。
通过网页解析的技术我们可以获取页面中任何我们需要的数据
执行流程:1.Spider爬虫部分发送请求,通过spidermiddleware中间层处理后发送给ENGINE引擎模块
2.引擎模块将请求发送给SCHEDULER模块进行调度
3.SCHEDULER模块将可以执行的请求调度给引擎模块
4.引擎模块将请求发送给DOWNLOADER下载模块进行下载,期间会经过download middleware进行处理
5.下载模块将爬取好的网页响应经过downloadermiddleware中间层处理后传递给引擎模块
6.引擎模块将响应传递给 Spider 爬虫模块
7.在爬虫模块我们自定义解析方式对响应解析完成后生成Item对象或者新的Request对象,经过spiddermiddleware发送给引擎模块
8.如果是Item对象传递给item和pipeline来进行对应的处理; 如果是Request对象则继续调度下载,重复之前的步骤。
我的理解:spider发送请求,spider middleware进行处理后,把可执行的请求进行下载,这个期间会把爬取好的网页响应经过download middleware进行处理;然后把响应传递给Spider爬虫模块,在爬虫模块中自定义解析方式对响应解析完成生成Item对象或者新的Request对象,若是新的请求对象,经过spider middleware进行处理后,进行下载,重复执行;若是Item对象,则把Item对象传递给item和pipeline进行处理和保存。
----------------------------------------------第一步:定义需要爬取的数据。scrapy.Item
第二步:编写一个spider。定义了初始URL,针对后续链接的规则以及从页面中提取数据的规则。观察HTML源码并创建我们需要的数据(种子名字,描述和大小)的XPath表达式。https://www.w3.org/TR/xpath-31/执行spider,获取数据scrapy crawl spider名字 -o 输出序列化文件名字.spider名字:存在于spiders文件夹下的python文件.输出序列化文件名字:支持json,xml,scv格式,json,xml准确率更高
--------------------------------------------------
--------------------scrapy使用Request和Response对象爬取Web站点。Request对象在spiders中被生成并且最终传递到下载器(Downloader),下载器对其进行处理并返回一个Response对象,Response对象还会返回到生成request的spider中。
---------------------from scrapy.pipelines.images import ImagesPipelineImagesPipeline:执行该类,可以在爬取的同时自动将图片数据保存到本地。
---------------------执行过程:执行spider爬虫,parse方法中获取response表示网页HTML,先通过xpath方法进行解析,然后再把值封装到item中;把生成的item传给pipeline中process_item方法,对item进行处理存储。
-------------------------------学习资料http://scrapy-chs.readthedocs.io/zh_CN/latest/intro/install.html
https://blog.csdn.net/Ahri_J/article/details/71703001