新大榭论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

《新大榭》- 创大榭地方网络社区先锋品牌 新大榭始终专注于地方网络社区平台的建设 关于我们- [大记事]- 留言建议- [新手报道]

发布 .新大榭软件管家(Excel版) V5.9版 财务/仓库/生产/销售/采购/行政/人事/校园 .公告 - 客户 - 打赏 - 职场 - Excel - Python.

新大榭镜像-音乐-法律-图书-高中课堂-实验 广告是为了能更好的发展 [欢迎商家支持本站互利共赢] 广告位招租.首页黄金广告位等您来!联系 13566035181

查看: 388|回复: 1

[模块] 7380 - Python库【pyspider】模块详细介绍

 关闭 [复制链接]
发表于 2021-7-3 19:08:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!

您需要 登录 才可以下载或查看,没有账号?注册

x
前言( O1 j) w2 E1 m0 j0 L) h7 x& R0 k
pyspider是支持WebUI的,支持任务监控,项目管理,以及多种数据库的一个强大的爬虫框架,这个真的很好用!!!这主要不是教大家怎么使用,怎么怎么样,主要是让大家懂运行的原理,以及框架的整体结构!. s1 s5 d4 `! @# P  H) X
今天主要是分为这几部分:. `% k8 G4 c3 c" q! T! Y3 m2 }
% O0 {: Y% h) C; F7 I+ O# N4 t+ h
1.为什么要使用pyspider?
# A) c, v4 i, d; v2.pyspider的安装& B3 l- [, O6 j" b  ~+ t5 k
3.pyspider简单使用5 s) ?2 i- m$ a' s& w+ y
4.pyspider框架的架构和执行流程
8 }% {1 o9 H' {0 x. f1 E
一、为什么要使用pyspider?; Z- [( _. Q, L1 F9 s+ _
我们很好奇,我们明明有了Scrapy框架,为什么还要使用pyspider框架呢?我们说两点. ~) n4 p! l; ~6 Y' ], a' U
pyspider的优点,它有这么几个优点
6 o8 }2 H) D" e8 A3 `0 g9 i' a1.提供WebUI界面,调试爬虫很方便
9 O, E9 Q2 U6 c; `% V2.可以很方便的进行爬取的流程监控和爬虫项目管理
# E7 w+ |* I/ {1 f% g) t* o2 m+ V3.支持常见的数据库
% h5 Y8 \9 b# A4.支持使用PhantomJS,可以抓取JavaScript页面
! q4 \+ h6 O  X! l# u3 F: n5.支持优先级定制和定时爬取等功能
和Scrapy的比较
9 g/ S. f* V9 c5 t1.pyspider 提供 WebUI,Scrapy它采用的是代码和命令行操作,但可以通过对接 Portia 现可视化配置
1 o/ V* h+ M/ _9 }2.pyspider 支持 PhantomJS来进行 JavaScript 谊染页面的采集 Scrapy 可以对接 Sc rapy-Splash组件,这需要额外配置) b0 G1 I& s; \3 W5 @" l" X
3.pyspider 中内置pyquery 作为选择器而Scrapy 接了XPath 对接css选择器和正则匹配! a- x( g' N3 `
4.pyspider的可扩展程度不高,Scrapy可以通过对接其他的模块实现强大的功能,模块之间的耦合度低
) X, l3 ~/ J. l
总结
1 A" E' I) Q, @' {所以如果要快速实现一个页面的抓取,推荐使用 pyspider,开发更加便捷,如果要应对反爬程度很强、超大规模的抓取,推荐使用 Scrapy ,
9 Q6 }( w; d) L$ b
( }6 T6 n8 H8 _! |二、pyspider的安装
# N3 a- R) x5 ]9 Y$ J2 bpyspider的安装相对简单,不需要安装一些列的依赖库直接使用8 O7 y2 Y+ r1 T6 H! b
  1. pip install pyspider
复制代码
然后等待安装成功就行,也可以使用源码安装 pyspider源码BlinkMacSystemFont, "]( @7 l& t; e" o+ O3 n! y( \
: O! S2 o  w- _: @! z
三、pyspider的简单使用
1.安装之后先验证是否安装成功,在CMD下输入
pyspider
) _1 N+ \% p; ^/ C7 V两者是一样的,新的pyspider框架已经整合了,所以使用pyspider就好8 ~. C1 N' u6 _! L7 o+ M
出现这个则说明运行成功,运行在5000端口,当然这个可以改
2.打开浏览器,输入
  1. http://localhost:5000/
复制代码
弹出两个东西,project name 是你项目的名称 start url 是你要爬取的链接,分别输入以后,再次点击右下角的create,完成创建; ^$ B/ d: C# ?  n

9 x- d# g& H& M! h整个右边部分,分为这么几个东西2 J& a% p# [& r
1.右上角的save 是保存按钮,更改代码之后几点保存$ z3 C. I7 u$ W1 E3 J
2.左上角的#后面的是你创建的一些参数,如创建时间,爬取域名,编码格式等
  e2 b) X! N9 j3.下面的代码部分是创建项目自动生成的,你可以添加一些你自己的东西,我们在这里完成整个项目的爬取、解析、以及保存等工作
* T. ]+ G/ D0 N7 k6 {9 N! V5 qcrawl_config:项目的所有爬取配置统一定义到这里,如定义 Headers 、设置代理等,配置之后全局生效
9 H! j# X" s/ u$ g; Y4 P) n@every:设置定时爬取的时间9 l7 \1 a* n4 g- y3 h4 n# ~
on_start:爬取入口,初始的爬取请求会在这里产生
+ i9 q! r$ i8 K1 Lself.crawl:该方法是爬取的主方法,被on_start调用,即可新建一个爬取请求,这里面有这么几个参数第一个参数是爬取的 URL ,这里自动替换成我们所定义的 URL ,还有 个参数 callback ,它指定了这个页面爬取成功后用哪个方法进行解析,代码中指定为 Idex_page()方法,即如果这个 URL 对应的页面爬取成功了,那 Response 将交给 index_page ()方法解析
) V- f# n; w. K* Kindex_page:方法接收这个 Response 参数,Response 对接了 pyquery 我们直接调用 doc()方法传入相应的css 选择器,就可以像 query 一样解析此页面,代码中默认是 a[href"="http ”],也就是说该方法解析了页面的所有链接,然后将链接遍历,再次调用了 crawl ()方法生成了新的爬请求,同时再指定了 callback为detail_page ,意思是说这些页面爬取成功了就调用 detail_page方法解析这里,index_page ()实现了两个功能,一是将爬取的结果进行解析, 二是生成新的爬取请求2 D- I5 I* T! D/ A
detail age:接收 Response 作为参数该方法抓取的就是详情页的信息,不会生成新的请求,只对 Response 对象做解析,解析之后将结果以字典的形式返回,将结果保存到数据库- R& G$ ^2 o1 [+ D! Z! }
2 _5 T* S. @5 g% b3 O) {' _) _
2 }- _9 S: A0 F, d; U, n  A+ A
捕获.JPG
+ d8 c* C9 Y0 y6 y5 Z点击左上角的pyspider可以返回主控制界面) L6 R' _4 o1 `
右上角的run可以让程序开始运行
0 W9 l, c: Y7 S; \1 P1 P2 e0 ^底边一排功能从左到右依次是 enable css selector helper:快捷替换css选择器 web:产看该URL下的web界面,html:产看该url下的HTML格式 ,follows:查看一共发起了多少个请求6 [' b" a- G4 i
2.执行点击run可以看到暂时执行后的结果
1 G) o9 S$ O- F& Y3.如果不正确,或者爬取信息有误,对右边代码部分进行调试8 _5 l9 a) [' X
4.最后返回到控制界面,把status改成running,并点击后面的run按钮开始执行2 r1 t6 `$ ^2 g" F' Y1 h
分别显示5m、1h、1d5分钟一小时以及一天的爬取结果,绿色表示成功,红色表示请求次数太多而放弃,蓝色表示等待执行
  D4 `5 |/ G2 V! A/ L7 C0 w& }, g2 N( j" z
一般的使用过程就是确定爬取的网站,创建项目,在crawl_config里进行配置,在index_page里确定要爬取的url,在detail_page里确定要爬取的数据信息
# I3 A8 _+ A. b( y
% K! H/ R8 |% X0 J9 t四、pyspider框架的架构和执行流程1.pyspider框架的架构) X( G; H2 g  d0 @3 h/ G3 s
pyspider的架构相对简单分为这么几个部分:scheduler(调度器)、fetcher(抓取器)、processor(脚本执行)任务由 scheduler发起调度,fetcher抓取网页内容, processor执行预先编写的py脚本,输出结果或产生新的提链任务(scheduler)、整个爬取的过程受,Monitor(监控器)的监控,结果保存在Result Worker(结果处理器)中。6 E& [0 h1 A' J
2.每个 pyspider 的项目对应一个 Python 脚本,该脚本中定义了一个Handler 类,它有on_start ()方法 爬取首先调用 on_start ()方法生成最初的抓取任务,然后发送给 Scheduler进行调度4 o* P: T1 s6 J

  ^$ P8 _- D% U& I% b& N3.执行流程
, s+ ~5 K2 G/ u1 \2 V
! z) t1 i9 p  q' `7 Pscheduler 将抓取任务分发给 Fetcher 进行抓取, Fetcher 执行并得到响应,随后将响应发送给Processer( z( r, X3 e* g( k7 J( a: V% ~( i
Processer 处理响应并提取 url,新的 URL 生成新的抓取任务,然后通过消息队列的方式通知Schduler 当前抓取任务执行情况,并将新生成的抓取任务发送Scheduler 如果生成了提取结果,则将其发送到结果队列等待 Result Worker 处理
) k; f2 v3 i6 _) u9 kScheduler 接收到新的抓取任务,然后查询数据库,判断其如果是新的抓取任务或者是需要重试的任务就继续进行调度,然后将其发送回Fetcher 进行抓取
( g1 ^* L3 A5 w7 r不断重复以上流程实现抓取
3 ?$ o, u0 a) J% Z7 l7 [, ?7 x* \" k2 Q2 o, A: c
五、出现错误
; w0 L4 S( ?$ ?* ppyspider安装和使用出现的一些问题
. R  l9 k) X! V( q) k, W6 p' y初学pyspider跳过的坑
+ m, |( r% {8 ]6 E基本上常见的错误都在这了!
8 G7 F& G$ E8 X+ z
6 l/ F2 Q0 W/ ]) o
新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
Q群推荐 大榭本地求职招聘QQ群,欢迎转发分享本地招聘信息资讯! 官方招聘1群(已满);官方招聘2群:315816937 *
 楼主| 发表于 2022-10-18 09:34:53 | 显示全部楼层
Pyspider的简单介绍和初使用Pyspider
& W# C( y9 a4 T7 h, pPyspider是由国人(binux)编写的强大的网络爬虫系统/ s9 q+ g) _; G0 o* U' g4 c" \/ `* \. a
Ptspider带有强大的WebUi / 脚本编辑器 / 任务监控器 / 项目管理器以及结果处理器。他支持多种数据库后端 / 多种消息队列 / Javascript 渲染页面爬去。使用起来非常方便。
$ M* {  g2 F3 P4 D1 n; {5 o
基本功能
  • 提供了方便易用的 WebUi 系统,可视化的编写和调试爬虫
  • 提供爬去进度监控 / 爬去结果查看 / 爬虫项目管理等功能
  • 支持多种后端数据库,如:MySQL / MongoDB / Rides 等
  • 支持多种消息队列,如:RabbimMQ / Beanstalk / Redis / Kombu
  • 提供优先级控制 / 失败重试 / 定时抓取等
  • 对接了PhantonJS。可以抓取Javascript 渲染的页面
  • 支持单机和分布式部署,支持 Docker 部署' z$ q7 r4 O! \! j
* J0 E/ _' l% {" I  d1 ]8 Z
Pyspider 和 Scrapy
Pyspider  - 提供了 WebUi ,爬虫编写 / 调试都是在WebUi 中进行的。
) F8 U  f. b; kScrapy    - 原生是不具备这个功能的,他采用的代码和命令行的操作,但是可以通过对接Portia 实现可视化配置
  x9 `9 h  j( Z. n/ C( {, sPyspider  - 调试非常便捷,WebUi 操作便捷直观

8 [( \) E( K% VScrapy    - 是使用parse 命令进行调试,方便程度不及Pyspider
. g7 p5 a: v6 I8 ]/ LPyspider  - 支持PhantomJS 来进行Javascript 渲染页面的采集。

& _0 Y2 d% _: e. DScrapy    - 可以对接Scrapy-Splash组件实现,不过需要额外的配置+ B# N; @, [2 N+ |
Pyspider  - 中内置了pyquery 作为选择器
+ a) p  g! Y' s; G8 M
Scrapy    - 对接了 Xpath / CSS 选择器和正则
% R/ x( A2 M* I. h% lPyspider  - 的可扩展程度不足,可配置化程度不高。

; D" N! O. O* m  qScrapy    - 可以通过对接Middleware / Pipelinc / Extension 等组件来实现非常强大的功能。模块之间的耦合度低,可扩展性高,如果要快速实现一个页面的抓取,推荐使用 Pyspider ,开发更便捷 ,如:爬去某个新闻网站内容
  o6 e) X  m- H' ]4 Y如果要对应反爬程度很大,规模较大的爬去。推荐使用 Scrapy ,如:封IP / 封账号风险大,高频率验证的网站
  [* U/ p, Q' W# C- T9 Q5 V- E3 z+ i0 a2 P6 \
Pyspider 架构
Pyspider 架构主要分为 Scheduler(调度器)/ Fetcher(抓取器)/ Processer(处理器)三个部分,整个爬去过程受到 Monitor(监控器)的监控,抓取的结果被 Result Worker(结果处理器)处理
新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
新大榭官方公益帮帮群:6603298 官方Excel学习交流群:82064486  欢迎您加入
您需要登录后才可以回帖 登录 | 注册

本版积分规则

新大榭七周年,感谢由您!

文字版|小黑屋|新大榭 ( 浙ICP备16018253号-1 )|点击这里给站长发消息|

GMT+8, 2025-11-3 14:39 , Processed in 0.103338 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表