一次性付费进群,长期免费索取教程,没有付费教程。
进微信群回复公众号:微信群;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安装Pyspider Pyspider已经安装完毕了。这里要注意的是,Pyspider默认是需要PhantomJS支持的。如果没有安装PhantomJS,那么在运行过程中可能会出现警告信息。 Pyspider对Windows的支持不是非常好。如果条件允许,尽量避免在Windows下使用Pyspider框架。官方网站也对此做了说明。 2、Linux下安装Pyspider 在Linux下安装Pyspider可能会出现依赖性的问题。这里采用最安全的方法,使用Anaconda创建虚拟环境Python 3后,在虚拟环境下安装Pyspider,这样可以完美地解决依赖性的问题。执行命令: su cd /usr/local/ git clone https://github.com/binux/pyspider.get ls cd pyspider python setup.py install 执行结果如图2所示。 图2 git安装Pyspider Pyspider已经安装完毕。测试一下,执行命令: exit cd pyspider 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.html pyquery中的定位与CSS有些类似,使用pyquery初始化对象后,直接在对象内对标签名进行定位(正常主流的定位方法)。如果只需要标签内的文字,使用pyquery定位后使用text()函数解析出来即可,在示例文件的当前目录下打开终端(或者打开终端后再进入示例文件的当前目录),进入python,执行命令: from pyquery import PyQuery doc=PyQuery(filename='song.html') print doc print doc('title').text() print doc('h1').text() print doc('li[album="25"]').text() 执行结果如图6所示。 图6 pyquery定位后获取正文 有时爬虫所需的信息是隐藏在标签属性值中的,这时就需要attr函数了,继续在终端中执行命令: print doc('h1').attr.id print doc('li[album="21"]').attr.album subTags=doc('li[album="21"]').items() for subTag in subTags: print subTag.attr.album 执行结果如图7所示。 图7 pyquery定位后获取属性值 在定位时如果有多个标签符合条件,默认情况下只会选取第一个符合条件的标签。 对于爬虫而言,掌握了定位、获取正文和获取属性值基本就足够用了。 虽然pyquery还有很大的潜力可挖,但对网络爬虫没有什么意义。 如需继续深究,请参考pyquery的官网或者Wiki。微信公众号:计算机与网络安全
ID:Computer-network
【推荐书籍】