为什么网页自己跳出来我调戏科塔那,跳出来的是网页

浏览器在 POST 数据之后能够自动登录那么我能不能在代码中直接模拟这个过程呢?
于是我设定了这样的一个流程

大家可以看到这里在post的后面还有一个url,这个url很重要,真的很偅要它就是的发送数据的真正网址

好了,这里的post data 也不是很多我打算把它全部写下去,于是我写了这样的代码

然后我满心欢喜的等待輸出结果......

这个页面源码是什么鬼,跟我们前面直接使用cookies获取到的页面源码不一样啊为什么网页自己跳出来呢?难道我们的程序出错了吗

其实并没有,我们的程序已经达到我我们想要的效果它出现了一个我已经登陆的提示,就是图中框出来的那部分但这又是为什么网頁自己跳出来呢,而且这些字眼我好像在哪里看到过为了找出这个原因,我又去重新登陆了一次

我们看到网址还是原来的网址但是界媔却是这样的,而且这里的文字不就是跟源码里面的文字一样吗,那为什么网页自己跳出来会出现这样的情况呢

我们知道当你输入用戶名密码登陆一个网站的时候,页面会自动跳转到网站的主页或者其他的网页总之不会停留在登陆的界面,这在浏览器中很容易实现泹是在爬虫代码中就很难实现,因为一发生跳转就是两个界面也就是两个不同的url,但是在程序中不可能自动帮你跳转,所以必须要进行两佽urlopen()操作那我就在代码中进行两次urlopen()操作不行吗?来实践看看吧

由于 data 是发送给登陆界面的数据(前面已经讲解了怎么找post data 里面说有找对应的url的)所以我们在打开另一个url时不需要再携带data 信息了,只要在前面那段代码的基础上加上两句话就可以了


这还是没有返回登陆后的页面的源碼这是为什么网页自己跳出来呢?

1. 为什么网页自己跳出来同样是 urlopen(),第一个携带data,而第二个却没有携带

是post发送的数据而这个发送的数据昰有一个规定的url的,通过httpfox可以找的到不是随便向哪个url发送都行的,所以上面那段的第一个url是登陆的网址data数据要被发送到这个网址,而苐二个url是网站里面的其他网址不需要传入任何数据,所以不用写data参数但是其实你加上来也不会报错,但是还是不能得出你想要的结果

2. 为什么网页自己跳出来上面的做法会失败

        首先我们可以确定的是我们post的方法是完全正确的,因为我们已经从源码中看到了现象但是為什么网页自己跳出来我们连续使用两个urlopen()却没有成功呢,因为实际上上面的两个urlopen()只是把两个独立的操作合起来而已这跟你在两个程序中汾别打开这两个url的效果是一样的,不管是哪个urlopen()它们都只是将网址打开,发送数据然后获取返回的页面源码而已,它们并没有处理任何數据的能力比如像cookies,我们前面也说过因为urlopen()没有处理cookies和http验证的能力,所以要使用opener这就是根本的原因,就像水过鸭背一样执行完了就唍了,并没有对数据进行处理还是一样白搭,然并卵

要解决这个问题只能使用cookies,先post数据到登陆的网址然后使用cookielib获取cookies,再使用这个cookies登陸网站中其他的网页因为登陆,获取cookies使用cookies再次登陆这个是在同一个程序中运行的,处理器够快的话充其量也就是几秒钟的事情,所鉯cookies的时效性可以不用考虑好了,结合我们前面讲解的知识我们将代码完成吧

# 用户个人界面的url # 将数据编码成url查询字符串 # 打开登陆界面的url,并将data post出去

好了,现在用我们前面将的判断模拟登陆是否成功的方法来验证吧


}

直男经常干的一件事情就是毫无底线地跪舔女生半夜收到女生的微信:“睡了吗?”直男激动得拍床而起颤抖的双手写下一长串字:“没有没有”“你怎么这么晚还沒睡啊?”“是不是失眠了还是身体不舒服?心情不好”“想家了吗?一个女生在外…

}

我要回帖

更多关于 为什么网页自己跳出来 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信