前言
写了那个图书馆预约脚本发现吸引了很多小白,然后发现他们学了爬虫,但是可能并不知道爬虫的本质和原理,可能看完视频或者教程觉得自己已经懂了,然后换了一个网站发现就懂爬教程里的那一个。因为写爬虫难的不是代码的实现,写一些小爬虫代码能有多难?不会就百度嘛。难的主要是数据包的分析,看完这一篇基本能让你会爬取所有的小网站了。
爬虫的实质
我们在浏览器中点击、输入等操作可以简化为下图。
以下是一个简化的登录流程图。
这是一个简化图,但是可以知道,用户在浏览器上做什么操作实质上都是浏览器向服务器发送数据包、接收数据包。
无论是爬虫(例如:爬取小说)还是自动化脚本(例如:图书馆抢座)的实质都是发送数据包、接收数据包,如图:可以看到,登录的话我们只需要发送一个关键的数据包就可以,不需要那么多没用的数据包。当然这是简化版,有一些网站登录可不止发送一个数据包,这就需要自己抓包、发包测试分析了。
看到这可能有些人已经按耐不住内心的激动去找个网站试试了,先别急,不然一会又回来了多少有点尴尬。
分析数据包的小技巧
如果你以为打开一个网页或者做某一个操作都是发送一个数据包那就太天真了。不信点f12然后打开百度看看,那数据包看的你头皮发麻。52个请求,就,挺懵逼的。
不过这是大网站嘛,这么多挺正常,一般的小网站不会有这么多。那么如何在多个数据包中找出你最想要的那些呢。
1.根据请求的路径、名称等
比如说你要找登录的关键数据包,你就找登录的对应关键字嘛。比如说login、logincheck啥的,可能有些低级网站指不定还有denglu这样的。这就要靠个人经验了,爬多了啥都能见到。
2.根据类型
还是拿百度举例子,假如你要找登录包(我打开的是首页,只是用来举个例子),像这些js、gif、css、png、还有我也不知道的plain基本没用。毕竟登录你管那些图片、gif图干啥,如果有图片验证码直接选择元素找到就行了。
结语
看到这基本上能帮小白对爬虫的理解更进了一步,分析一些简单的包不在话下了。你别跟我说把包分析出来了不会用写程序模拟发包,看我揍不揍你就完事了。
如果是爬数据的话还要xpath等解析、包复杂分析不出来的话可以用selenium。这些就自行百度吧,网上有的我也懒得写了。
觉得有用的话点个赞吧。