Pyspider

Pyspider是国人开发的开源且强大的网络爬虫系统

python 脚本控制,可以用任何你喜欢的html解析包(内置 pyquery),WEB 界面编写调试脚本,起停脚本,监控执行状态,查看活动历史,获取结果产出,数据存储支持MySQL, MongoDB, Redis, SQLite, Elasticsearch; PostgreSQL 及 SQLAlchemy,队列服务支持RabbitMQ, Beanstalk, Redis 和 Kombu,支持抓取 JavaScript 的页面。组件可替换,支持单机/分布式部署,支持 Docker 部署。强大的调度控制,支持超时重爬及优先级设置。支持python2&3

在CentOS7 上安装pyspider。


因为Pyspider所依赖一个pycurl。而这个包比较特殊。需要使用源码安装。相关的链接http://www.linuxidc.com/Linux/2015-09/122805.htm

(链接时Ubuntu的,centos把 apt-get换成yum就好)

然后直接

pip install pyspider

另外需要再安装 phantomjs。http://phantomjs.org/

phantomjs是一个无界面的浏览器。

在centos7 上启动pyspider

[root@lol ~]# pyspider all
phantomjs fetcher running on port 25555
[I 171102 16:14:51 result_worker:49] result_worker starting...
[I 171102 16:14:51 processor:211] processor starting...
[I 171102 16:14:51 scheduler:647] scheduler starting...
[I 171102 16:14:52 scheduler:782] scheduler.xmlrpc listening on 127.0.0.1:23333
[I 171102 16:14:52 scheduler:586] in 5m: new:0,success:0,retry:0,failed:0
[I 171102 16:14:52 tornado_fetcher:638] fetcher starting...
[I 171102 16:14:52 app:76] webui running on 0.0.0.0:5000

在浏览器上访问5000端口

接下来创建一个项目

下来进入到 调试运行代码的界面。

接着演示一下 抓取猫途鹰旅游网站的内容https://www.tripadvisor.cn/

假设我们要抓取这个网站的旅游景点信息。那么首先将被抓取网页的url填入。

修改Handler类里面的on_start方法:

    @every(minutes=24 * 60)def on_start(self):self.crawl('__START_URL__', callback=self.index_page)

将里面的 __START_URL__换成 要抓取的页面。 点击右上角的 Save 。再点 左边的 run

运行结束会得到 一个url。点web有该页面的 浏览。

再点击url后的箭头,会把该页面全部的a标签的 href 取出来。

没错。只要稍作修改就可以把该页面的景区详情的页面抓出来。

还是修改 Hangler类。修改 index_page方法。

    @config(age=10 * 24 * 60 * 60)def index_page(self, response):for each in response.doc('.attraction_element .listing_title > a').items():self.crawl(each.attr.href, callback=self.detail_page)

根据 详情页面的一些特点就可以抓出来 想要的页面。

接下来是如何处理抓到页面的那些内容了。

    @config(priority=2)def detail_page(self, response):name = response.doc(".heading_title").text()rating = response.doc(".reviews_header_count").text()address = response.doc(".location > .address").text()phone = response.doc(".phone > div").text()introduction = response.doc(".attraction_details > div").text()return {"name" : name,"rating" : rating,"address" : address,"phone" : phone,"introduction" : introduction,"url": response.url,"title": response.doc('title').text(),}

这个利用的pyquery 。将页面相应的内容全部抓下来。

最后是一些其他的操作了。如存入到数据库,存入到文件中。

    def on_result(self,result):if result:self.saveToFile(result)def saveToFile(self,result):file = open("/root/result.txt","a")file.write(str(result)+"\n")file.close()

这样就存起来了。

Pyspider 框架的用法相关推荐

  1. Android数据绑定框架DataBinding用法

    Android数据绑定框架DataBinding用法     [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/5195374 ...

  2. python自动化_python自动化测试-Behave框架的用法介绍 - python测试学习

    测码学院  Behave框架的用法介绍 众所周知:行为驱动开发((behavior-drivendevelopment,BDD)是一种基于敏捷软件开发的方法.它可以鼓励开发人员,业务参与者和QA人员之 ...

  3. 日志管理-NLog日志框架简写用法

    日志管理-NLog日志框架简写用法 本文转载:http://www.blogjava.net/qiyadeng/archive/2013/02/27/395799.html 在.net中也有非常多的日 ...

  4. python数据挖掘系列教程——PySpider框架应用全解

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python数据挖掘系列教程--PySpider框架应用全解. PySpider介绍 pyspider上手更简单,操作更加简便,因为它增加了 ...

  5. 爬虫开发入门:使用 Pyspider 框架开发爬虫

    使用 pyspider 作为爬虫入门框架要比直接用 Scrapy 容易太多,如果你需要快速爬取一个网站,pyspider 爬虫框架是最佳选择之一 pyspider 框架具有以下优点 有 Web 界面用 ...

  6. 14、pyspider框架

    一.pyspider框架介绍 1.简介 pyspider 是个强大的由python实现的爬虫系统. 纯python的 强大的webui,支持脚本编辑,任务监控,项目管理和结果查看 数据后台支持,MyS ...

  7. Android ORM框架GreenDao用法

    Android ORM框架GreenDao用法 0 简介 android 上的ORM框架主要有两个:ormlite 和 GreenDAO,本篇主要介绍GreenDao的用法,原因是GreenDAO的速 ...

  8. PySpider 框架

    PySpider 框架的功能特点 PySpider是一个基于Python语言编写并带有WebUI功能的分布式网络爬虫框架.与其他爬虫工具相比,PySpider不但对于不同的数据库后端都可以提供数据库操 ...

  9. php laravel框架开发实例,Laravel框架集合用法实例浅析

    本文实例讲述了Laravel框架集合用法.分享给大家供大家参考,具体如下: 前言 集合通过 Illuminate\Support\Collection进行实例,Laravel的内核大部分的参数传递都用 ...

  10. php yii框架使用教程,php中yii框架实例用法

    Yii2框架在目前而言,网络上好评不断,最主要的原因,不管是新的框架,还是回顾旧的框架,总是有一个无法代替的优点,就是做事快,在性能使用上,也是一般框架无法媲美的,在php最好用的框架评选了,永远都是 ...

最新文章

  1. 求捐“一杯奶茶钱”,西北大学真成“最穷211”?
  2. 框架SpringMVC笔记系列 二 传值
  3. 【HTML】处理<br>换行符追加到前端换行无效的问题 --- html中渲染的字符串中包含HTML标签无效的处理方法,字符串中包含HTML标签被转义的问题 解决
  4. 皮一皮:男女的不同...
  5. 看小说有广告?不可能的,分分钟教你爬取小说
  6. not null primary key什么意思_explain都不会用,你还好意思说精通Mysql查询优化?
  7. 随便聊聊,Linux 中的环境变量
  8. MetaModelEngine:域模型定义
  9. 为什么不是基址寻址适用于数组_微机原理--8种寻址方式
  10. VLOOKUP模糊匹配的妙用
  11. Linux命令_用户,权限管理
  12. UVA254 Towers of Hanoi【DFS】
  13. keytool命令详解 自签名证书
  14. TAOCP-READING-1.3'-1
  15. mysql in查询效率真的低_MySql中in查询效率低的替代方法
  16. 【寒江雪】圆与扇形物体的碰撞检测
  17. CSS3重复渐变(线性和径向渐变)
  18. android 字符串缩进换行换行,Android Textview第二行缩进/悬挂缩进
  19. 2021年电工(初级)考试题库及电工(初级)模拟考试
  20. Codeforces Edu Hacking

热门文章

  1. 正确打开db文件的方式,避免乱码和无意义内容
  2. python如何看字符串长度_Python如何查找字符串的长度?(代码示例)
  3. php求1到100的素数之和,php 质数计算 求100以内质数和
  4. 【信息技术】【2014.07】交通监控中的车辆跟踪与速度估计
  5. 企业微信API使用基本教程
  6. 大地坐标高斯/UTM投影计算工具
  7. Spring常用注解整理
  8. linux dma大块内存,宋宝华:Linux内核的连续内存分配器(CMA)——避免预留大块内存...
  9. java cxf调用wsdl文件_如何使用CXF将 .wsdl 文件变成java文件
  10. 一些堪称神器却少为人知的网站或软件(整理自知乎)