kvieta丶心灵 发表于 2016-12-8 16:14

从零开始学采集————抓取前程无忧数据之模拟登陆

本帖最后由 kvieta丶心灵 于 2016-12-8 16:25 编辑

嗨~又见面了大家~上一节的内容不知道各位有没有认真看呢?当然,不认真看也没关系,照着代码抄就可以了,如果你想一直当菜鸟的话……本节主要用易语言模拟登陆前程无忧,用于采集个人简历用,因为前程无忧必须登陆以后才能查看简历,只能采集免费的哦~~收费的可以私密我~好啦~我们开始进入本节内容吧~1.前期准备I      用上节介绍的火狐浏览器,打开http://ehire.51job.com/MainLogin.aspx,没有账号的自己注册一个,不提供测试账号。II   F12打开开发者工具切换到网络标签,输入用户名密码。先别急着点登陆。III    清空所有请求数据。
如下图:2.开始抓取登陆信息并分析
然后我们点击登陆,会出现如下图所示的样子:
哇,好多数据请求呀~到底哪些是有用的呢?一般来说,我们点击登陆会提交账号密码给后台,会发送一个请求,基本上都是post方式,所以我们先分析post方式的请求。翻到最上边。如图可以看见一条post请求:
看文件名UserLogin,这个光看名字就知道是啥意思了,直接点它,右边弹出数据的详细信息,如下图:
然后我们点击响应或者预览,发现里面没有东西,如下图:
为啥呢……不是已经登陆了吗?那是因为我们只是提交了用户信息,服务器收到以后要返回东西给我们呀~所以我们会收到一个get方式的数据请求,刚好第二条是get,我们点击看一下,如下图:
呢……奇怪呀,为啥响应和浏览里面还是没内容呢?不急,我们继续点击下一条数据。如下图:
有东西了!!!!刚好和页面显示的一模一样,那么我们可以得出一个结论,当我们点击登陆的时候,发送用户名和密码给服务器,服务器返回两次信息给我们,第一次返回:UserLoginJump.aspx文件,然后从UserLoginJump.aspx文件下跳转到Navigate.aspx,这就是我们登陆以后的用户管理页,分析完以后我们来模拟第一条数据请求,如下图:
需要发送什么东西呢?我们可以看参数项里面的内容,如下图:
这些就是点击登陆以后提交给服务器的内容了,第一二个是用户名,第三个是密码,多次测试发现:ctmName:“XXX”userName:“XXX”password:“XXX”checkCode:“”oldAccessKey:“7d91df74837b4ed”langtype:“Lang=&Flag=1”isRememberMe:“true”sc:“dd3ac428a705daad”ec:“336afeccd465416189c149eb737256eb”returl:“”checkCode、langtype、isRememberMe 、sc 、ec、returl这几个参数按默认提交就可以,那么就剩下一个oldAccessKey参数,那这个值怎么获取呢?一般来说,这些提交参数都可以在登陆页里面的网页内容找得到,但是特殊的要在js文件里面找到相应的算法得出(此处不做讲解,因为前程无忧的可以在登陆页网页内容找得到),那咱们就退出登录呗。然后右键查看网页源代码,Ctrl+F查找AccessKey,如下图:
这就是oldAccessKey的值,我们可以获取到登陆页的页面内容然后取出这个值,怎么弄?看代码:

这样我们就获取出登陆页面的网页代码,然后取出这个值,分析下网页代码,发现

这个值处于id="hidAccessKey" value="和" 之间(必须是页面你唯一的一串文本,不然可能获取到的不是这个值)我们用精易模块里面的文本_取出中间文本()命令取出这个值,如下图:

成功获取出来了!然后我们修改下这个子程序,让它返回这个值:好啦~然后我们回到之前,重复上面的登陆步骤,回到如图所示的内容:



我们右键这条数据,然后复制POST数据,如图:


然后我们在每一项前面加上&,并且复制到我们写好的程序里面,如下图:


这样我们模拟第一条请求就写好啦~我们测试一下……突然看官中有一位机智的小伙伴举起了双手,请问下我怎么知道他发送成功啦?喂喂喂,好奇心害死人知道不,咱就不和你一般见识,不就是想知道是不是正确的嘛……方法多得去了,我就说一种比较蠢但是很实用的方法,验证响应头是不是一样的。看代码(为什么这么写?请根据上节内容自行探讨):




然后我们对比浏览器的是不是一样的



0.0    啥情况……按道理应该是一样的呀?什么鬼啊!神经病啊!我们仔细想想是不是差点啥……程序君心里面默默的说了一句:请求头被你吃掉啦?你不给我怎么给你获取正确啊!Soga,感谢程序君的提醒,那咱们加上请求头吧……



(脾气真大)如下图:



经过测试发现只要加上Referer、Content-Type这两个就可以获取。看官们自行测试。到这里会出现两种情况,第一种是和浏览器的响应头一样,第二种是不太一样,不一样的如下图:


如果出现这种情况,说明你测试过了,并且账号已经登陆,不信你在浏览器上登陆,你会发现你的账号已经登陆了!如下图所示:



好啦,本节教程就到这里,下节我将会教大家怎么跳转到用户管理页。大家也可以自己试着模拟哦~再见~









kvieta丶心灵 发表于 2016-12-9 12:58

陈小姐的刘先生 发表于 2016-12-9 12:42
我想知道这个黑色的背景怎么玩出来的 还有这个彩色的字体。百度无果。这是皮肤还是什么?

颜色配置里面弄

陈小姐的刘先生 发表于 2016-12-9 12:42

我想知道这个黑色的背景怎么玩出来的 还有这个彩色的字体。百度无果。这是皮肤还是什么?

dext1231 发表于 2016-12-8 16:23

好详细的说!

1952 发表于 2016-12-8 16:53

支持支持

GreyChroma 发表于 2016-12-8 16:59

收藏了,谢谢楼主贡献,免费的先看看

CHENWEI 发表于 2016-12-8 17:03

适合小白 ,顶你

dai55555 发表于 2016-12-8 17:08

谢谢分享,感谢

lan2602144404 发表于 2016-12-8 17:39

讲得不错,谢谢分享

jhnas123 发表于 2016-12-8 17:49

继续采集,学习下

qa1368 发表于 2016-12-8 17:52


继续采集

何包蛋 发表于 2016-12-8 18:00

谢谢分享
页: [1] 2
查看完整版本: 从零开始学采集————抓取前程无忧数据之模拟登陆