设为首页 加入收藏

TOP

Python模拟登陆练习——imooc.com登陆(一)
2017-10-09 16:55:24 】 浏览:6537
Tags:Python 模拟 登陆 练习 imooc.com

写下这篇文章的时候,是博主学习python的第三天( 也许是第四天:( ),python是博主接触的第二门解释型语言(第一门是java script)。

讲真在很久之前就想要用博客记录自己的学习历程了,然而就像写日记一样,写着写着就放弃了-。-

so今天决定给自己一个好的开端~

博主的学习方式是直奔目的,遇到问题百度各种博客,网站,百度找不到google找,就这样。这种学习方式是真的见效快,但显而易见,基础会比较薄弱。

因此学习python的基本语法,就直奔爬虫了!

-----------------------------------以上是一段大前言---------------------------------------------

今天博主要把三天学习spider的过程,经验分享出来,希望能给一些新手们指点一下道路,也给自己的python生涯刻一道痕迹。

博主愚以为,模拟登陆网站无非有两种方式:

  1. 一是手动收取cookie。

    在浏览器登陆网站并完成登录后,然后打开开发者工具,随便访问某页面,根据实际情况找一条request,把cookie复制下来。

  2. 二是python收取cookie。

    这也是本篇文章详细阐述的。见下。

现在让博主以imooc.com为例讲解一下网站的模拟登陆

 开始

博主习惯用urllib2+cookielib的方式写爬虫,所以代码的一开始是这样的:

#coding=utf8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
import urllib2
import urllib
import cookielib
#以上是套路
#以下创建一个cookiejar管理cookie,同时创建opener并安装到urllib2中
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
opener.addheaders=[('user-agent','Mozilla/5.0')]

 

opener.addheaders可以以list的形式添加header,非常方便

 然后

cookie是一种服务器记录用户信息的小文件,尽管有时候会侵犯大家的隐私,但是在存储用户的登录信息实现自动登陆的方式还是很方便的。

它的工作流程是这样的:

  1. 首先服务器会在第一次访问网站时向浏览器返回一个response,其中会有几条set-cookie的信息,于是浏览器默默帮你把它记录到cookie中去
  2. 当你点击登陆,输入用户名、密码等必要信息后,浏览器会将你的信息连同以上cookies中的某些一并post给服务器
  3. 登陆成功后浏览器又收到服务器的悄悄话——得到几条重要cookie并保存下来
  4. 如果此时你没关闭浏览器,在访问该网站其他页面时,浏览器会把某些cookie发送给服务器,这时候你发现你已经自动登录了
  5. 如果登陆时你选择了“自动登录”“7天内自动登陆”诸如此类checkbox,浏览器还会得到一些长久的cookie(十天半个月的)以便你明天登陆,后天登陆。。。。

了解cookie的工作原理后,我们访问一下主页,把cookie搞下来

博主是这样写的:

#先写下几条url
url_login = 'http://www.imooc.com/passport/user/login'
url_index = 'http://www.imooc.com'
url_test = 'http://www.imooc.com/user/setbindsns'
data = {
    'username':'*********',
    'password':'*******',
    'verify':'',
    'remember':'1',
    'pwencode':'0',
    'referer':'http://www.imooc.com'
}
data_encoded = urllib.urlencode(data)

#get主页获取cookie
req_index = urllib2.Request(url_index)
res_index = opener.open(req_index)

我们可以打印下cookie看看:

print cj._cookies

 

 {'www.imooc.com': {'/': {'PHPSESSID': Cookie(version=0, name='PHPSESSID', value='3q1c66hds4h054f19ciqb4rtg2', port=None, port_specified=False, domain='www.imooc.com', domain_specified=False, domain_initial_dot=False, path='/', path_specified=True, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest={}, rfc2109=False)}}, '.imooc.com': {'/': {'imooc_isnew_ct': Cookie(version=0, name='imooc_isnew_ct', value='1486280759', port=None, port_specified=False, domain='.imooc.com', domain_specified=True, domain_initial_dot=True, path='/', path_specified=True, secure=False, expires=1517816759, discard=False, comment=None, comment_url=None, rest={}, rfc2109=False), 'cvde': Cookie(version=0, name='cvde', value='5896d8376631d-1', port=None, port_specified=False, domain='.imooc.com', domain_specified=True, domain_initial_dot=True, path='/', path_specified=True, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest={}, rfc2109=False), 'imooc_isnew': Cookie(version=0, name='imooc_isnew', value='1', port=None, port_specified=False, domain='.imooc.com', domain_specified=True, domain_initial_dot=True, path='/', path_specified=True, secure=False, exp
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇python对MySQL进行添加修改删除以.. 下一篇We Chall-Training: ASCII—Write..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目