最近半个月在学习爬虫,收获很大,所以来做一个总结
写了这么久爬虫,其实爬虫的本质就是模仿浏览器向服务发送请求,然后服务器给我响应的数据,就像是和服务器交换物品一样,我先给他一个,他再给我一个,只不过我给他的是请求对象,他给我的是响应的数据,仅此而已
爬虫的难点在于我给他的数据他不要,他告诉我你给的东西不够,我想要的没给完,所以我不要你的,我也不会给你,也就是有些关键信息我并没有给他,那这些信息在哪里拿呢?一般情况下网页源码中就会存在,但是一些大的网站,网页源码中是不会有的,这时就是需要进行一项工作"JS逆向",刚接触他是因为看到了一篇博客网易云音乐JS逆向,他详细的讲解了JS逆向
是什么东西,当时可把我吸引到了,人家网站为了混淆代码的内容,故意设置了无意义的变量名,不好的代码格式,来进行反爬,看完博客的我觉得好简单啊,等我自己去实现的时候就一堆BUG。哎!
仅针对网易云的逆向里面涉及到了两个加密AES
加密和RSA
加密,看到这些加密时,这是啥?这是什么加密?之后我就去搜素关于这两个加密的内容,发现这里面的水太深了,我把握不住啊。好的,现在我知道有这些东西存在,然后我就想着以后我写网站的时候,我也要加密,用高深的加密,让你们逆不了的哈哈
Python中关于爬虫方面主要有两个库和一个框架,一个库是urllib,另一个库是requests,一个框架是scrapy
Scrapy框架使用了几次,确实很方便,有很多需要我们自己做的工作他都帮我们做好了,但是我感觉这个框架使用起来太笨重,不适合初学者使用,如果是项目中使用还好,但是初学者的话,还是使用那两个基本库吧,既可以熟练一下爬虫的过程,还不那么笨重,还有,我在网上看了一下关于Scrapy框架的评论,无外乎褒贬两种,其中有一个观点我是认同的,说Scrapy框架是采取了多线程、异常的什么手段,但是这并不是优点,因为爬取数据时,如果你的访问过于频繁,网址直接把你封了,或者你直接把网址给爬崩溃了,就得不偿失了
在爬虫的学习中碰到过很多的问题,比如ua反扒,这是最常见的一种爬虫,我们只需要把ua参数加进请求头中即可,这就是我前面说的我给它一个东西,服务器给我返还一个东西,如果我给的不够(没有ua),它也就不会返还给我东西,我把ua加上之后,它就返还东西给我;还有服务器返还的响应数据是压缩过后的,此时就需要我们先将数据解压之后,才可以进行下一步操作。然后还有一个就是爬取数据时,在进行多次爬取之后,经常会使访问的速度变慢,具体原因不清楚,猜测是后台服务器限制了我的IP(ノ`⊿´)ノ
爬虫的学习就告一段落吧
之后我要开始我的Web开发,早点把我的BuGu小站
给弄出来
先总结这么多吧~~~