pyspider简介:PySpider是一个国人编写的强大的网络爬虫系统并带有强大的WebUI。采用Python语言编写,分布式架构,支持多种数据库后端,强大的WebUI支持脚本编辑器,任务监视器,项目管理器以及结果查看器。css
安装:pip install pyspider
启动:pyspider all
使用:localhost:5000html
爬取的url咱们取学信网院校信息库的url:"http://gaokao.chsi.com.cn/sch/search--ss-on,searchType-1,option-qg,start-0.dhtml"
点击create建立项目后,进入编辑页面:python
这里的crawl(URL, callback)两个参数分别表明要爬取的网站和爬取后的回调函数。最后的结果的形式由return决定。web
点击左半面右上角的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...