python-42: 怎么判断模拟登陆是否成功

"怎么判断模拟登录是否成功"php

我最开始的时候也问过这个问题,当时对全部流程都还不熟悉,并且写的代码没一个能成功的,就给本身提了一大堆的问题,也在论坛上发表提问,在这个过程当中,我遇到了不少的状况,好多都能做为判断的依据,这里跟你们分享一下python

  1. 代码不报错可是彻底没有输出的,这是没得怀疑的了,有多是你代码中的逻辑错误或者网址输错或者根本不能访问网站等等,这些是隐式的错误,而像语法错误,关键词拼写错误等等这些程序一运行就会报错的,我把他们叫作显式错误
    cookie

  2. 代码运行出现URLError或者是HTTPError的,有多是函数使用不对或者是网络缘由或者是网站限制,反正连输出都看不到的确定想都不用想了网络

  3. 有输出结果,并且是网页源码,这至少证实了你的程序是没有错的,可是有源码并不意味着是登录成功以后的网页的源码,因此你须要对比登录前的源码和登录后的源码有什么区别函数

  4. 登录后网页上通常会显示你的用户名,我的信息,或者退出的选项,或者其余的操做标志等等,这些通常都能在网页源码中找到,因此要先手动登录,对比登录前和登录后的界面有什么区别,而后在爬取到的源码中按这些关键字搜索网站

如今咱们从两个方面来判断咱们是否已经登录成功了ui

  1. 首先,先下载网页源码,程序已经很熟悉了
    url

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__author__ = '217小月月坑'

import urllib2

url = 'http://www.lvye.org/userinfo.php?uid=409557'
user_agent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:39.0) Gecko/20100101 Firefox/39.0'

headers = {'User-Agent':user_agent}

request = urllib2.Request(url,headers=headers)
response = urllib2.urlopen(request)
print response.read()

这个代码中没有使用cookies或者是其余操做,因此爬取的网页是未登录的网页。源码很长,这里就不贴出来了,大家能够本身去对比,登录后的网页中有"退出"的字样,咱们如今爬取的网页应该会有"登录","用户注册"等等这些字样spa

2. 对比登录先后的两个界面code

仍是那个网址:http://www.lvye.org/userinfo.php?uid=409557

至于这个网址我要在这里说一下,最后面的uid=409557 应该是身份的ID标识,或者说是一个序号,是这个网站管理者给每个注册的用户的惟一标识,因此前面叫你们先注册也是这个缘由,使用个人这个网址应该是登录不上的,在编写代码的时候,也须要把headers,cookies等等换成你本身的,要否则是登录不上的

这是登录前的界面


这是登录后的界面


你们应该看到网页的左上角和电子邮件这一栏的信息在登录先后是不同的,而这些信息必定会在网页源码中找到,如今咱们来截取源码中的一些片断

这是登录前的

这是登录后的

因此如何判断是否登陆成功最主要的是对比登陆先后网页的变化,这些变化必定会在源码中表现出来,咱们只要在获取的源码中找到关键的信息就好了

相关文章
相关标签/搜索