Pyspider:爬取中国全部大学

pyspider简介:PySpider是一个国人编写的强大的网络爬虫系统并带有强大的WebUI。采用Python语言编写,分布式架构,支持多种数据库后端,强大的WebUI支持脚本编辑器,任务监视器,项目管理器以及结果查看器。css

安装:pip install pyspider
启动:pyspider all
使用:localhost:5000html

clipboard.png

爬取的url咱们取学信网院校信息库的url"http://gaokao.chsi.com.cn/sch/search--ss-on,searchType-1,option-qg,start-0.dhtml"
点击create建立项目后,进入编辑页面:python

clipboard.png

这里的crawl(URL, callback)两个参数分别表明要爬取的网站和爬取后的回调函数。最后的结果的形式由return决定。web

clipboard.png

点击左半面右上角的run执行任务,出现以下界面:数据库

clipboard.png

下面的web 表明该连接的web界面,html表明该连接的html结构,follows表明该界面上的链接,message中显示爬取过程当中的一些信息。点击follows中链接后面的绿色三角,进入咱们要爬取的界面中。在web界面里,咱们能够预览页面信息后端

clipboard.png

点击下面的 enable css selector helper,咱们能够指定爬取的css块:网络

clipboard.png

选中css后,将指针放在python代码的response.doc()中,点击左侧黑色箭头,便可将css选择嵌入到代码中去架构

clipboard.png

clipboard.png

咱们要爬取的内容就在该页面处,因此咱们爬取到页面后,不须要再进行爬取,因此代码修改以下:编辑器

clipboard.png

点击右上角的save后,从新run,左侧页面会显示结果预览:分布式

clipboard.png

结果中存在省市的名称,不符合咱们预期的要求,缘由是咱们在使用css selector时,css selector将省份和学校名称归为一种css了:

clipboard.png

因此咱们只能自定义css selector,打开html界面,分析省份和学校名称的区别:

clipboard.png

clipboard.png

学校的td标签存在 align=left属性,所以咱们将css selector 改成:response.doc('.search td[align^="left"] > a')

save后从新run,获得咱们想要的结果:

clipboard.png

这只是一页的结果,学校信息一共有134页,所以咱们最终修改代码为:

clipboard.png

save后,咱们返回pyspider dashboard

clipboard.png

修改1处状态为Running或者Debug,点击2处的Run,爬取的结果能够经过点击Results查看:

clipboard.png

能够在右上角选择下载数据的样式,剩下的就是对数据的处理了。

可是事情尚未结束,处理完数据后,咱们发现爬取的结果中学校的数量与学信网上显示的数量不同!
在Results中咱们找到了一条这样的数据:

clipboard.png

打开这个链接,咱们发现这个网站的粗糙程度远远超出了咱们的想象,最后几条数据的格式居然和前面的不同

clipboard.png

咱们以前设定的 css selector 并不适用于这些数据,对最后这些奇奇怪怪的数据,咱们的css selector须要修改成:

clipboard.png

因此说全国高校名单仍是不要本身爬取了。
2016年全国高等学校名单http://www.moe.edu.cn/srcsite...

相关文章
相关标签/搜索