一次性付费进群,长期免费索取教程,没有付费教程。

进微信群回复公众号:微信群;QQ群:460500587

 教程列表 见微信公众号底部菜单 |  本文底部有推荐书籍 

微信公众号:计算机与网络安全

ID:Computer-network

Pyspider爬虫框架是一个由国人设计开发的Python爬虫框架。与其他爬虫框架不同的是Pyspider不需要任何编辑器或者IDE的支持。它直接在Web界面,以浏览器来编写调试程序脚本。在浏览器上运行、起停、监控执行状态、查看活动历史、获取结果。Pyspider支持MySQL(MariaDB)、MongoDB、SQLite等主流数据库,支持对JavaScript的页面抓取(也是靠的PhantomJS的支持),重要的是它还支持分布式爬虫的部署,是一款功能非常强大的爬虫框架。Pyspider上手比较简单,但想深入了解也是要花点工夫的。基于Pyspider纯正的Python血统,安装Pyspider最简单的方法是用pip。如果需要最新版本的Pyspider可以到官网下载最新版本安装,或者用git来安装。1、Windows下安装Pyspider在Windows中安装Pyspider采用比较简单的pip安装,进入桌面后,单击左下角的开始按钮,在弹出菜单中单击“运行”,打开cmd.exe,执行命令:pip install pyspider一定要先配置好pip的源,否则安装会慢得令人难以接受。执行结果如图1所示。

图1  pip安装PyspiderPyspider已经安装完毕了。这里要注意的是,Pyspider默认是需要PhantomJS支持的。如果没有安装PhantomJS,那么在运行过程中可能会出现警告信息。Pyspider对Windows的支持不是非常好。如果条件允许,尽量避免在Windows下使用Pyspider框架。官方网站也对此做了说明。2、Linux下安装Pyspider在Linux下安装Pyspider可能会出现依赖性的问题。这里采用最安全的方法,使用Anaconda创建虚拟环境Python 3后,在虚拟环境下安装Pyspider,这样可以完美地解决依赖性的问题。执行命令:sucd /usr/local/git clone https://github.com/binux/pyspider.getlscd pyspiderpython setup.py install执行结果如图2所示。

图2  git安装PyspiderPyspider已经安装完毕。测试一下,执行命令:exitcdpyspider all执行结果如图3所示。

图3  启动Pyspider如果没有安装PhantomJS,需要先安装PhantomJS。这个接口(Pyspider控制台)既可以本地访问,也可以远程访问。在浏览器中打开网址http://127.0.0.1:5000(或者在远程主机上打开http://IP:5000),如图4所示。

图4  Pyspider WebUI现在可以正常使用Pyspider了。3、选择器pyquery测试在Pyspider爬虫中继续使用CSS和XPath也是可以的。但Pyspider框架自备了pyquery选择器(在安装Pyspider时pyquery会自动安装),并在框架中为pyquery准备了提示接口。pyquery选择器与CSS和XPath一样强大,同样支持嵌套定位。在Pyspider框架中不妨试用一下pyquery,至于最终选择哪一个选择器,视个人习惯而定。pyquery选择器不仅仅可以选择过滤有效信息,还可以修改原文中的标签属性,但在爬虫中只需要选择过滤这一功能就足够了。pyquery选择定位非常简单,最常用的是通过标签配合标签属性和属性值定位(一般来说通过标签定位就足够了),偶尔也有直接通过标签属性或者标签属性值定位的。写一个简单的网页song.html做测试,song.html的代码如下:

1

2     song

3

4

Adele Music

5

6         Someone like you

7         Hello

8         Rolling in the deep

9         Set fire to the rain

10

11

12

在浏览器中打开该页面并显示源代码,如图5所示。

图5  示例文件song.htmlpyquery中的定位与CSS有些类似,使用pyquery初始化对象后,直接在对象内对标签名进行定位(正常主流的定位方法)。如果只需要标签内的文字,使用pyquery定位后使用text()函数解析出来即可,在示例文件的当前目录下打开终端(或者打开终端后再进入示例文件的当前目录),进入python,执行命令:from pyquery import PyQuerydoc=PyQuery(filename='song.html')print docprint doc('title').text()print doc('h1').text()print doc('li[album="25"]').text()执行结果如图6所示。

图6  pyquery定位后获取正文有时爬虫所需的信息是隐藏在标签属性值中的,这时就需要attr函数了,继续在终端中执行命令:print doc('h1').attr.idprint doc('li[album="21"]').attr.albumsubTags=doc('li[album="21"]').items()for subTag in subTags:print subTag.attr.album执行结果如图7所示。

图7  pyquery定位后获取属性值在定位时如果有多个标签符合条件,默认情况下只会选取第一个符合条件的标签。对于爬虫而言,掌握了定位、获取正文和获取属性值基本就足够用了。虽然pyquery还有很大的潜力可挖,但对网络爬虫没有什么意义。如需继续深究,请参考pyquery的官网或者Wiki。

微信公众号:计算机与网络安全

ID:Computer-network

【推荐书籍】

pyspider all 只启动了_Python 爬虫:Pyspider 安装与测试相关推荐

  1. pyspider配置mysql_docker快速搭建分布式爬虫pyspider

    简介 pyspider是Python中强大Web爬虫框架,并且支持分布式架构. 为什么使用docker搭建pyspider 在安装pyspider时爬过一些坑,比如使用pip install pysp ...

  2. pyspider all 只启动了_【麦芽口腔】全民爱牙月正式启动!

    每天2次正确刷牙 每年2次定期检查.洁牙 你做到了吗? 今年9月20日 是我国第32个"全国爱牙日" 9月5日 麦芽口腔"全民爱牙月" 系列活动正式启动! 我们 ...

  3. pyspider all 只启动了_我是如何让微博绿洲的启动速度提升30%的(二)

    作者 | 收纳箱,绿洲iOS研发工程师,绿洲ID:收纳箱KeepFit 0.序言 之前的文章<我是如何让微博绿洲的启动速度提升30%的>收到了很多朋友的反馈. 其中,动态库转静态库的收益相 ...

  4. python增量爬虫_python增量爬虫pyspider

    1.为了能够将爬取到的数据存入本地数据库,现在本地创建一个MySQL数据库example,然后 在数据库中建立一张表格test,示例如下: DROP TABLE IF EXISTS `test`; C ...

  5. 数据之路 - Python爬虫 - PySpider框架

    1.PySpider基本功能 提供方便易用的WebUI系统,可视化地编写和调试爬虫. 提供爬取进度监控. 爬取结果查看.爬虫项目管理等功能. 支持多种后端数据库,如MySQL. MongoDB. Re ...

  6. go爬虫和python爬虫哪个好_python 爬虫实战项目--爬取京东商品信息(价格、优惠、排名、好评率等)-Go语言中文社区...

    利用splash爬取京东商品信息 一.环境 window7 python3.5 pycharm scrapy scrapy-splash MySQL 二.简介 为了体验scrapy-splash 的动 ...

  7. python爬虫设计模式_Python爬虫进阶一之爬虫框架概述

    综述 爬虫入门之后,我们有两条路可以走. 一个是继续深入学习,以及关于设计模式的一些知识,强化Python相关知识,自己动手造轮子,继续为自己的爬虫增加分布式,多线程等功能扩展.另一条路便是学习一些优 ...

  8. 关于如何实现程序一天只启动一次的想法(C++实现)

    问题描述: 我们在程序开发当中,经常会遇到某些子程序需要实现一天只启动一次的功能,该功能实现的方法有很多种,其原理都是通过记录标记为来实现的.本次要分享的也是利用程序标记为来实现的,而且只需要使用一个 ...

  9. 【Android UI设计与开发】3.引导界面(三)实现应用程序只启动一次引导界面

    大部分的引导界面基本上都是千篇一律的,只要熟练掌握了一个,基本上也就没什么好说的了,要想实现应用程序只启动一次引导界面这样的效果,只要使用SharedPreferences类,就会让程序变的非常简单, ...

最新文章

  1. 亚洲首获奖!清华大学团队获ACM SIGCOMM 2021唯一最佳学生论文奖
  2. 【实施工程师】Linux查看日志后100行
  3. python和嵌入式哪个容易_嵌入式与python选哪个
  4. php改名下载,PHP如何给上传的文件改名
  5. htmlentities在mysql_PHP和mySQL:何时确切使用htmlentities?
  6. C语言课后习题(59)
  7. mybatis 自动生成integer_通过mybatis-generator-core工具自动关联表生成对应model、mappers及dao层代码类完整教程...
  8. gcc/g++版本切换与降级
  9. 【软考】2021软件设计师复习开坑指南
  10. 精述wifi、zigbee在链路层的安全原理:CCM模式
  11. Git:rebase 是什么
  12. 【学习笔记】数组的地址分配及指针数组的使用
  13. MySQL学习笔记_03
  14. html怎么改变li前面的点,CSS定义li前面的小点样式
  15. Photoshop png图片改变 透明背景之外的图片颜色
  16. Uva509 RAID
  17. Zuul Filter的小坑
  18. 可视化图表组件体系的构建(内附全套开源文件)
  19. 如何在R语言中进行中文编程
  20. python和报表生成工具_报表自动生成工具的原理方法,及热门软件

热门文章

  1. typecho 全站ajax,typecho全站静态化方案
  2. http协议编程java_Java与Http协议的详细介绍
  3. Visual C++学习总结——进程或线程与指定CPU绑定
  4. posix threads php,3分钟短文 | PHP多线程没用过,你可能错过了计算机最好的时代!...
  5. openssl证书相关
  6. 利用python解析手机通讯录
  7. RHEL6入门系列之三,GNU计划与Linux发行版
  8. addcslashes与stripcslashes
  9. 教你制作自己的linux
  10. 水系图可以在哪里找_顶刊EES综述:水系锌离子电池面临的问题与机遇