标签:save oca llb doc 编码格式 pack selector 直接 形式
pyspider是支持WebUI的,支持任务监控,项目管理,以及多种数据库的一个强大的爬虫框架,这个真的很好用!!!这主要不是教大家怎么使用,怎么怎么样,主要是让大家懂运行的原理,以及框架的整体结构!
今天主要是分为这几部分:
1.为什么要使用pyspider?
2.pyspider的安装
3.pyspider简单使用
4.pyspider框架的架构和执行流程
我们很好奇,我们明明有了Scrapy框架,为什么还要使用pyspider框架呢?我们说两点
pyspider的安装相对简单,不需要安装一些列的依赖库直接使用
pip install pyspider
然后等待安装成功就行,也可以使用源码安装 pyspider源码
1.安装之后先验证是否安装成功,在CMD下输入
pyspider
或者
pyspider all
两者是一样的,新的pyspider框架已经整合了,所以使用pyspider就好
出现这个则说明运行成功,运行在5000端口,当然这个可以改
2.打开浏览器,输入
进入pyspider控制台
出现这个则说明你的框架没什么问题!!!
我把框架的执行分为了这么几部分
结果
我们分别来一步步说一下
1.创建
点击create开始创建
2.左上角的#后面的是你创建的一些参数,如创建时间,爬取域名,编码格式等
3.下面的代码部分是创建项目自动生成的,你可以添加一些你自己的东西,我们在这里完成整个项目的爬取、解析、以及保存等工作
crawl_config:项目的所有爬取配置统一定义到这里,如定义 Headers 、设置代理等,配置之后全局生效
@every:设置定时爬取的时间
on_start:爬取入口,初始的爬取请求会在这里产生
self.crawl:该方法是爬取的主方法,被on_start调用,即可新建一个爬取请求,这里面有这么几个参数第一个参数是爬取的 URL ,这里自动替换成我们所定义的 URL ,还有 个参数 callback ,它指定了这个页面爬取成功后用哪个方法进行解析,代码中指定为 Idex_page()方法,即如果这个 URL 对应的页面爬取成功了,那 Response 将交给 index_page ()方法解析
index_page:方法接收这个 Response 参数,Response 对接了 pyquery 我们直接调用 doc()方法传入相应的css 选择器,就可以像 query 一样解析此页面,代码中默认是 a[href"="http ”],也就是说该方法解析了页面的所有链接,然后将链接遍历,再次调用了 crawl ()方法生成了新的爬请求,同时再指定了 callback为detail_page ,意思是说这些页面爬取成功了就调用 detail_page方法解析这里,index_page ()实现了两个功能,一是将爬取的结果进行解析, 二是生成新的爬取请求
detail age:接收 Response 作为参数该方法抓取的就是详情页的信息,不会生成新的请求,只对 Response 对象做解析,解析之后将结果以字典的形式返回,将结果保存到数据库
2.执行点击run可以看到暂时执行后的结果
3.如果不正确,或者爬取信息有误,对右边代码部分进行调试
4.最后返回到控制界面,把status改成running,并点击后面的run按钮开始执行
分别显示5m、1h、1d5分钟一小时以及一天的爬取结果,绿色表示成功,红色表示请求次数太多而放弃,蓝色表示等待执行
一般的使用过程就是确定爬取的网站,创建项目,在crawl_config里进行配置,在index_page里确定要爬取的url,在detail_page里确定要爬取的数据信息
1.pyspider框架的架构
pyspider的架构相对简单分为这么几个部分:scheduler(调度器)、fetcher(抓取器)、processor(脚本执行)任务由 scheduler发起调度,fetcher抓取网页内容, processor执行预先编写的py脚本,输出结果或产生新的提链任务(scheduler)、整个爬取的过程受,Monitor(监控器)的监控,结果保存在Result Worker(结果处理器)中。
2.每个 pyspider 的项目对应一个 Python 脚本,该脚本中定义了一个Handler 类,它有on_start ()方法 爬取首先调用 on_start ()方法生成最初的抓取任务,然后发送给 Scheduler进行调度
3.执行流程
pyspider安装和使用出现的一些问题
初学pyspider跳过的坑
基本上常见的错误都在这了!
标签:save oca llb doc 编码格式 pack selector 直接 形式
原文地址:https://www.cnblogs.com/xiaohuhu/p/12205807.html