python模拟登录人人网

模拟登录人人网

代码:

#_*_ coding=utf8 _*_
import urllib
import urllib2
import cookielib
import time
import lxml.html

LOGIN_URL = "http://www.renren.com/PLogin.do"
LOGIN_EMAIL = '**********'
LOGIN_PASSWORD = '*********'

def parse_form(html):
    tree = lxml.html.fromstring(html)
    data = {}
    for e in tree.cssselect('form input'):
        if e.get('name'):
            data[e.get('name')] = e.get('value')
    return data

cj = cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

html = opener.open(LOGIN_URL).read()
data = parse_form(html)

data['email'] = LOGIN_EMAIL
data['password'] = LOGIN_PASSWORD
encoded_data = urllib.urlencode(data)

request = urllib2.Request(LOGIN_URL,encoded_data)
reponse = opener.open(request)
content = reponse.read()

html = open('renren.html','w')
html.write(content)
html.close()

python模拟登录的代码网上已经有很多了,其实都是大同小异吧,都是那一套流程。

主要解释两部分代码:

1 .函数parse_form

def parse_form(html):
    tree = lxml.html.fromstring(html)
    data = {}
    for e in tree.cssselect('form input'):
        if e.get('name'):
            data[e.get('name')] = e.get('value')
    return data

这个函数从网页解析出来我们所需要提交的表单,form 标签下的 input都有可能是我们所需要处理的,有些值是固定的的,有些是需要我们输入的。

这是解析出来的表单

{'autoLogin': 'true',
 'captcha_type': 'web_login',
 'domain': 'renren.com',
 'email': '',
 'icode': None,
 'key_id': '1',
 'origURL': 'http://www.renren.com/home',
 'password': None}

我们要关心,那些空值的项,’email’,’password’,这些也正网页上需要我们输入的项,对于这些项,我们赋上我们自己的账号,密码

我们提交表单的网页,直接分析网页是可以得到,从form 标签的 action属性,我们可以获取这次要提交表单的url.

2 .cookie
最初学习python 的时候也试着写了几个模拟登录的小程序,但无疑例外失败,当时什么也不懂,不知道为什么,会出错感觉自己抓包分析错了。其实是忽略了cookie

什么是cookie

cookie是网站在http响应头中传输的少量数据。浏览器将这些数据存储起来,并在后续对该网站的请求头中包含他们。这样就可以让网站识别和跟踪用户。

缺少了cookie,失败是当然的了。

cj = cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

这部分代码也就是加载cookie的作用

大致这样一个登陆程序也就完成,现在python的中可以用于爬虫的工具是十分之多,例如使用mechanize,几行代码就可以实现一个模拟登录的程序。

import mechanize
br = mechanize.Browser()
br.open("http://www.renren.com/PLogin.do")
br.select_form(nr=0)
br['email'] = '*******'
br['password'] = '*******'
response = br.submit()
print response.geturl()

感觉十分方便。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值