不止不觉中,已经大学毕业上了研究生了,其实这一系列教程很早就想开始写,由于一堆事情加上拖到了现在。(原写于2017年9月18号)
缘起
大概是大二下学期刚开学的时候,我开始接触了Web开发,那个时候跟着网上看视频,学习了HTTP Get与Post请求,了解了网站是怎么个工作的。我当时突然联想到了平时都在用的课程格子,想着十分有趣,想着能不能用这种技术去做这样一款查课表的东西。
于是乎,网上寻找资料,了解了登陆的原理,以及如何获取到Cookie。当时,我最熟悉的语言是C#,从网上找了个解析HTML的dll,用着自带的HttpWebRequest就开始搞了。那时还不会用chrome,用的HttpWatch,也遇到了很多坑,不过也通过自己的努力把学校的课表搞下来了。
不过,我发现单纯搞个课表也并没有什么卵用,于是我想到了当时正值学校抢课期间,我就做个抢课软件,那还不吊炸天。
于是我用那个只能在IE上跑起来的HttpWatch抓到了JSON的数据,当时也不知道JSON是什么,只知道XML,还网上问了一下这是什么格式的数据,后来就知道这是传说中的JSON,又去恶补了一遍JSON的知识。然后又找了个C#的解析JSON的dll,在我的电脑上把抢课的软件跑起来了,下面就是当时的软件截图。
就是通过这个自己编写的这个爬虫软件,我选上了当时的“英文记录片视听”这门课,不过后来听说这门课有点坑,我又给退了,o(╯□╰)o。
我都做过哪些?
自从那以后,我开始对爬虫产生了浓厚的兴趣,没事儿就爬点东西玩儿,下面是我搞过的几个和爬虫相关的小应用。
USTB选课系统
练习客户端开发,把我校的选课系统移植到了Android、iOS、Mac、Ubuntu、Windows客户端上,见github.com/nladuo/ustb…。
教务信息服务号
查询教务系统的成绩、学分、课表等,用来练习微信开发的。
淘宝Bra爬虫
统计一下中国女性的胸围分布。
还书提醒
提醒自己别忘了还书。
链家爬虫
学习scrapy时候写的。
种子站
拿DHT爬虫+Sphinx做的种子搜索引擎,后来数据太多了,网站已经关了,只有图了。
教程大纲
谈完了我和爬虫君的缘分后,便要开始进入正题了。在之后的几篇文章中,我将从基础的定向爬虫开始讲起,并结合多线程提高抓取速度,通过数据库来缓存数据。之后会聊一聊反反爬虫的技术,解决一些限制性的问题。因为爬虫最原始的功能其实是构建搜索引擎,最后,将会使用ElasticSearch构建一个搜索的案例。
1、爬虫介绍
- ①爬虫是什么?
- ②环境搭建与入门
2、爬虫基础
- ①爬取网页新闻列表
- ②Session登陆
- ③多进程爬取
3、数据存储
- mongodb的使用
4、反反爬虫
- ①JS渲染:selenium+phantomjs的使用
- ②ip防禁:使用代理IP
- ③简单验证码破解:使用KNN
5、案例——北科贴吧帖子搜索
- ①爬虫编写
- ②使用ElasticSearch搜索帖子
项目地址
相关代码都放在了:github.com/nladuo/USTB…