爬虫入门:网络请求分析

大家好,这里是安迪。

摘要:看到有不少爬虫新手都是一头扎进代码里,一通乱弄,最后,跑通从大佬那里拿到的代码,嘿嘿嘿,抓到了数据结果,然后就没有然后,后面一出问题就又一脸懵逼,恢复到”大佬快来拯救“的姿态里。

好吧,此处也有安迪自己,捂脸,逃~

当然也有些小伙伴会问,大佬是如何成为大佬的?

本着授人以鱼不如授人以渔的原则,本次安迪就来揠苗助长——爬虫大佬是如何炼成的


首先要厚颜无耻如安迪——假的,别学安迪,会被打的

关键词:请求构造,代理服务器,中间人攻击,Fiddler抓包,PostMan


爬虫入门:网络请求分析_第1张图片
Google了一圈,只有这种丑图可用了,如果连这个也找不到,那就只剩灵魂画师模式可以启动了

如图,比如你开启浏览器访问某个页面时,浏览器就会向网站服务器发送一串数据——请求request;服务器收到请求后,返回一串数据,也就是response。

那么爬虫也就是在重复这个过程,只不过,这里把浏览器换成了爬虫程序,最终数据流向从流向你本人变成了流向数据库。以及这里服务器给的响应response也就是爬虫想得到的数据了。

那这个用request获取response有什么玄机呢?

先从request结构说起:

request,里面包括

url:目标网址,有时候身份标识也会被服务器要求放在url里面,随request一通丢给服务器

headers:请求头,里面包含杂七杂八的参数,只讨论对爬虫重要的——user-agent:浏览器标识,表示你用的浏览器类型

cookies:服务器给你的身份标识,在你登录后或者是访问后,由服务器扔过来的数据,浏览器会自动把它存起来,请求时把身份加进去,服务器就知道你是哪位用户了。注:一种说法说是单独的字段,另一种说法是cookies包含在请求头里,管他呢,具体写法看一下文档,把cookies扔进代码里,该加在哪里,程序会为你搞定一切,反正能运行,就行了,手动括弧笑。就Python而言,这边的坑就是,不同的库、包对传入cookies格式是有要求的,比如字典、字符串、编码格式utf-8的bytes等。这里一定要仔细看文档,别自己一通复制粘贴乱搞,善用搜索引擎、Github前人的代码、Pycharm设置断点debug查变量传递过程。

基本上一个request里包含了,目标资源url,身份标识,浏览器标识,大部分网站的数据都能爬下来了


Tricky的地方在于如何找到这些诡异的url,参数那么多,很多还都有时效性,哪些才是身份标识,身份标识怎么获取呢?

1、大部分诡异url可以用Fiddler抓包找出来,也有隐藏很深的,怕是只能靠内部人士透露,或者前面的大神写在自己的博客里,随技术社区,代代相传了。

2、身份标识参数甄别,用PostMan进行测试,但是PostMan也有漏测误测的情况,所以最好是使用PostMan作为一个辅助测试工具和参数整理器,格式化各种复杂的request parameters,再把它扔进代码里,至于按什么格式放进代码里,还是那几句话,搜索引擎、文档、前人的代码。

这里伸手,就该打手心了。拒绝私信回答此类问题。

3、身份标识怎么获取:用Fiddler进行中间人攻击,从代理这层截取;selenium操纵浏览器,api函数取出浏览器cookies


自助餐时间——犯懒不想写工具使用、请求构造教程,在此贴上前人的教程作为补充资料,Fiddler、PostMan用法都在补充资料里了,自取

补充资料:

Fiddler

PostMan

你可能感兴趣的:(爬虫入门:网络请求分析)