前面简单提到了 [Python] 模拟登录的程序,但是没写清楚,这里再补上一个带注释的 Python 模拟登录的示例程序。简单说一下流程:先用[cookielib]获取cookie,再用获取到的cookie,进入需要登录的网站。所以想学的同学,有必要听一下这位老师的课、领取python福利奥,想学的同学可以到梦雅老师的围鑫(同音):前排的是:762,中间一排是:459,后排的一组是:510 ,把以上三组字母按照顺序组合起来即可,她会安排学习的。
| `01` | `# -*- coding: utf-8 -*-` |
| `02` | `# !/usr/bin/python` |
| `03` | |
| `04` | `import` `urllib2` |
| `05` | `import` `urllib` |
| `06` | `import` `cookielib` |
| `07` | `import` `re` |
| `08` | |
| `09` | `auth_url ``=` `'[http://www.baidu.com/]'` |
| `10` | `home_url ``=` `'[http://www.baidu.com]'``;` |
| `11` | `# 登陆用户名和密码` |
| `12` | `data``=``{` |
| `13` | `"username"``:``"nowamagic"``,` |
| `14` | `"password"``:``"pass"` |
| `15` | `}` |
| `16` | `# urllib进行编码` |
| `17` | `post_data``=``urllib.urlencode(data)` |
| `18` | `# 发送头信息` |
| `19` | `headers ``=``{` |
| `20` | `"Host"``:``"http://www.baidu.com"``,` |
| `21` | `"Referer"``: ``"[http://www.baidu.com]"` |
| `22` | `}` |
| `23` | `# 初始化一个CookieJar来处理Cookie` |
| `24` | `cookieJar``=``cookielib.CookieJar()` |
| `25` | `# 实例化一个全局opener` |
| `26` | `opener``=``urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar))` |
| `27` | `# 获取cookie` |
| `28` | `req``=``urllib2.Request(auth_url,post_data,headers)` |
| `29` | `result ``=` `opener.``open``(req)` |
| `30` | `# 访问主页 自动带着cookie信息` |
| `31` | `result ``=` `opener.``open``(home_url)` |
| `32` | `# 显示结果` |
| `33` | `print` `result.read()` |
再附带几个示例程序:
1. 使用已有的cookie访问网站
| `01` | `import` `cookielib, urllib2` |
| `02` | |
| `03` | `ckjar ``=` `cookielib.MozillaCookieJar(os.path.join(``'C:\Documents and Settings\tom\Application Data\Mozilla\Firefox\Profiles\h5m61j1i.default'``, ``'cookies.txt'``))` |
| `04` | |
| `05` | `req ``=` `urllib2.Request(url, postdata, header)` |
| `06` | |
| `07` | `req.add_header(``'User-Agent'``, \` |
| `08` | `'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)'``)` |
| `09` | |
| `10` | `opener ``=` `urllib2.build_opener(urllib2.HTTPCookieProcessor(ckjar) )` |
| `11` | |
| `12` | `f ``=` `opener.``open``(req)` |
| `13` | `htm ``=` `f.read()` |
| `14` | `f.close()` |
2. 访问网站获得cookie,并把获得的cookie保存在cookie文件中
| `01` | `import` `cookielib, urllib2` |
| `02` | |
| `03` | `req ``=` `urllib2.Request(url, postdata, header)` |
| `04` | `req.add_header(``'User-Agent'``, \` |
| `05` | `'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)'``)` |
| `06` | |
| `07` | `ckjar ``=` `cookielib.MozillaCookieJar(filename)` |
| `08` | `ckproc ``=` `urllib2.HTTPCookieProcessor(ckjar)` |
| `09` | |
| `10` | `opener ``=` `urllib2.build_opener(ckproc)` |
| `11` | |
| `12` | `f ``=` `opener.``open``(req)` |
| `13` | `htm ``=` `f.read()` |
| `14` | `f.close()` |
| `15` | |
| `16` | `ckjar.save(ignore_discard``=``True``, ignore_expires``=``True``)` |
3. 使用指定的参数生成cookie,并用这个cookie访问网站
| `01` | `import` `cookielib, urllib2` |
| `02` | |
| `03` | `cookiejar ``=` `cookielib.CookieJar()` |
| `04` | `urlOpener ``=` `urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))` |
| `05` | `values ``=` `{``'redirect'``:", ``'email'``:``'abc@abc.com'``,` |
| `06` | `'password'``:``'password'``, ``'rememberme'``:", ``'submit'``:``'OK, Let Me In!'``}` |
| `07` | `data ``=` `urllib.urlencode(values)` |
| `08` | |
| `09` | `request ``=` `urllib2.Request(url, data)` |
| `10` | `url ``=` `urlOpener.``open``(request)` |
| `11` | `print` `url.info()` |
| `12` | `page ``=` `url.read()` |
| `13` | |
| `14` | `request ``=` `urllib2.Request(url)` |
| `15` | `url ``=` `urlOpener.``open``(request)` |
| `16` | `page ``=` `url.read()` |
| `17` | `print` `page` |