pyspider简介:PySpider是一个国人编写的强大的网络爬虫系统并带有强大的WebUI。采用Python语言编写,分布式架构,支持多种数据库后端,强大的WebUI支持脚本编辑器,任务监视器,项目管理器以及结果查看器。
安装:pip install pyspider
启动:pyspider all
使用:localhost:5000
爬取的url我们取学信网院校信息库的url:"http://gaokao.chsi.com.cn/sch/search--ss-on,searchType-1,option-qg,start-0.dhtml"
点击create创建项目后,进入编辑页面:
这里的crawl(URL, callback)两个参数分别代表要爬取的网站和爬取后的回调函数。最后的结果的形式由return决定。
点击左半面右上角的run执行任务,出现如下界面:
下面的web 代表该链接的web界面,html代表该链接的html结构,follows代表该界面上的连接,message中显示爬取过程中的一些信息。点击follows中连接后面的绿色三角,进入我们要爬取的界面中。在web界面里,我们可以预览页面信息
点击下面的 enable css selector helper,我们可以指定爬取的css块:
选中css后,将指针放在python代码的response.doc()中,点击左侧黑色箭头,即可将css选择嵌入到代码中去
我们要爬取的内容就在该页面处,所以我们爬取到页面后,不需要再进行爬取,所以代码修改如下:
点击右上角的save后,重新run,左侧页面会显示结果预览:
结果中存在省市的名称,不符合我们预期的要求,原因是我们在使用css selector时,css selector将省份和学校名称归为一种css了:
所以我们只能自定义css selector,打开html界面,分析省份和学校名称的区别:
学校的td标签存在 align=left属性,因此我们将css selector 改为:response.doc('.search td[align^="left"] > a')
save后重新run,得到我们想要的结果:
这只是一页的结果,学校信息一共有134页,因此我们最终修改代码为:
save后,我们返回pyspider dashboard
修改1处状态为Running或者Debug,点击2处的Run,爬取的结果可以通过点击Results查看:
可以在右上角选择下载数据的样式,剩下的就是对数据的处理了。
但是事情还没有结束,处理完数据后,我们发现爬取的结果中学校的数量与学信网上显示的数量不一样!
在Results中我们找到了一条这样的数据:
打开这个连接,我们发现这个网站的粗糙程度远远超出了我们的想象,最后几条数据的格式竟然和前面的不一样
我们之前设定的 css selector 并不适用于这些数据,对最后这些奇奇怪怪的数据,我们的css selector需要修改为:
所以说全国高校名单还是不要自己爬取了。
2016年全国高等学校名单:http://www.moe.edu.cn/srcsite...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。