1、创建一个scrapy的开发环境
下载scrapy,但是由于pip版本等问题,所以没有最终成功,但是更改pycharm中的环境,使用anaconda就可以了,因为包含了scrapy环境!
2、使用 scrapy 来创建 ArticleSpider项目
打开cmd界面,输入scrapy startproject ArticleSpider
然后在相应的目录找到 ArticleSpider项目,复制到pycharm中
3、更改cmd界面目录,到达pycharm项目目录,我的目录是:C:UsersAdministratorPycharmProjectspythonArticleSpiderArticleSpiderspiders>
4、把提前写好的一个books.py文件粘贴到pycharm目录下,在cmd界面输入scrapy crawl books -0 books.csv
5、最终在pycharm页面看到生成了一个books.csv文件
爬虫项目大概流程:
-新建项目:scrapy startproject xxx
-明确需要目标/产出:编写item.py
-制作爬虫:地址spider/xxx.py
-存储内容:pipelines.py
ItemPipneline:
-对应的是pipelines文件
-爬虫爬取出数据存入item后,item中保存的数据需要进一步处理,比如清洗,去重,存储等。
-process_item:
-spider提取出来的item作为参数传入,同时传入的还有spider
-此方法必须实现
-必须返回一个Item对象,被丢弃的item不会被之后的pipeline处理
2.__init__:构造函数
-进行一些必要的参数初始化
3.open_spider(spider):
spider对象被开启的时候调用
4.close_spider(spider):当spider对象被关闭的时候调用
Spider:
-对应的是文件夹spiders下的文件
-__init__.py:初始化爬虫名称,start_urls列表
-start_requests:生成Requests对象交给Scrapy下载并返回response
-parse:根据返回的response解析出相应的item,item自动进入pipeline;如果需要,解析出url,url自动交给requests模块,一直循环下去
-start——request:此方法被调用一次,读取start_url内容并启动循环过程
-name:设置爬虫名称
-start_urls:设置第一批怕去的url
-allow_domains:spider允许爬取的域名列表
-start_request(self):只被调用一次
parse
-log:日志记录
中间件(DownloaderMiddlewares):
-中间件是处于引擎和下载器中间的一层组件
-可以有很多个,被按顺序加载执行
-作用是对发出的请求和返回的结果进行预处理
-在middlewares文件中
-需要在settings中设置以便生效
-编写中间件非常简单,中间件必须是scrapy.contrib.downloadermiddleware.DownloaderMiddleware的子类
-一般一个中间件实现一个功能
-必须实现以下一个或者多个方法
-process_request(self,request,spider)
-在request通过的时候被调用
-必须返回None或Response或request或者raise,ignoreRequest
-None:scrapy将继续处理该request
-Request:scrapy将停止调用process_request并重新调度返回的request
-Response:scrapy将不会调用其他的process_request或者process_exception,直接将该response作为节点,同时调用process_response函数
-process_response(self,request,response,spider)
-跟process_request大同小异
-每次返回结果的时候会自动调用
-可以有多个,按顺序调用