外星人源码论坛 首页 编程经验 Pyspider:爬取中国所有大学

Pyspider:爬取中国所有大学

2018-3-21 12:18
原作者: 外星人源码网 来自: 外星人源码网 收藏 分享 邀请

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

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...


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

粉丝 阅读91 回复0
上一篇:
H5中优化碰撞检测发布时间:2018-03-21
下一篇:
这可能是最好的性能优化教程(一)发布时间:2018-03-21
推荐资讯
国内最专业的源码技术交流社区
全国免费热线电话

0373-5171417

周一至周日9:00-23:00

反馈建议

admin@eenot.com 在线QQ咨询

扫描二维码关注我们