这几天一直在学习用python 爬取网页, 今天试着写了一个小程序, 模拟登陆 人人网,并且提供了发送文字状态的函数。在登录的时候,已经可以处理有验证码的 情况 ,就拿来练手吧。 (在处理字符串的部分比较麻烦===因为不敢用正则表达式QAQ )

代码:

# -*- coding: utf-8 -*-
import urllib2,urllib,cookielib,json,sys
from bs4 import BeautifulSoup###
reload(sys)
sys.setdefaultencoding('utf8')
####cookie
cookiejar= cookielib.CookieJar()
cookproc= urllib2.HTTPCookieProcessor(cookiejar)
######get the pagedef get(url,headers=False):if headers:req=urllib2.Request(url,headers)else:req=urllib2.Request(url)opener=urllib2.build_opener(cookproc)urllib2.install_opener(opener)page=urllib2.urlopen(req)try:page=page.decode('utf-8')except :page=page.decode('gbk','ignore')return pagedef post(url,postdata,headers=False):postdata=urllib.urlencode(postdata)if headers:req=urllib2.Request(url,postdata,headers)else :req=urllib2.Request(url,postdata)opener=urllib2.build_opener(cookproc)urllib2.install_opener(opener)page=urllib2.urlopen(req).read()try:page=page.decode('utf-8')except :page=page.decode('gbk','ignore')return pageclass RenRen:email        =""pwd           =""_id           =""name      =""icode     =""_rtk      =""_tok      =""def __init__(self,email,pwd):self.email=emailself.pwd=pwdself.check()self.login()def check(self):postdata={'_rtk'            :self._rtk,'email'            :self.email}url='http://www.renren.com/ajax/ShowCaptcha'if post(url,postdata)==1:self.getCode()def getCode(self):par={        't'           :'web_login','rnd'      :0.47730758627661407}url='http://icode.renren.com/getcode.do?%s' %urllib.urlencode(par)data=get(url)tmp = tempfile.mkstemp(suffix='.png')os.write(tmp[0], data)os.close(tmp[0])os.startfile(tmp[1])self.icode=input("输入验证码:")## get  necesary paramentsdef getpar(self):for x in cookiejar:if x.name=='id':self._id=x.valuebreakurl='http://www.renren.com/%s' % self._idpage=urllib2.urlopen(url).read()html=BeautifulSoup(page)parli=html.find(name='script')s=str(parli)index1=s.index('nx.user')index2=s.index('nx.user.isvip')s=s[index1+10:index2-1]parli=s.split(',')self.name=parli[3][8:]self._tok=parli[4][17:-1]self._rtk=parli[5][9:-3]print self.name,self._tok,self._rtkdef login(self):postdata={'captcha_type'                :'web_login','domain'                   :'renren.com','email'                       :self.email,'f'                           :'http%3A%2F%2Fwww.renren.com%2F476284792','icode'                      :self.icode,'key_id'                  :1,'origURL'                  :'http://www.renren.com/home','password'                    :self.pwd,'rkey'                      :''}headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0'}url="http://www.renren.com/ajaxLogin/login?1=1&uniqueTimestamp=2014611340911"info=json.loads(post(url,postdata,headers))if info["code"]:self.getpar()print self.name,'登录成功'else:print '登录失败'def publish(self,content):postdata={'_rtk'               :self._rtk,'channel'          :'renren','content'         :content,'privacyParams'      :{"sourceControl":"99"},'requestToken'        :self._tok,'withInfo'         :'%7B%22wpath%22%3A%5B%5D%7D'}url='http://shell.renren.com/'+self._id+'/status' post(url,postdata)print 'ok'email= input('用户名')
password=input('密码')
rr=RenRen(email,password)
#rr.publish('下雨吧')

python 模拟登陆人人网,并发文字状态相关推荐

  1. Python之 使用session类模拟登陆人人网

    使用request模块的session类模拟登陆人人网 因为人人网的登陆不需要验证码,故模拟登陆比较简单. 思路 1. 使用浏览器打开人人网的登陆页面 2. 找出登陆时发送post请求的url地址和请 ...

  2. python3模拟登陆人人网(requests)

    前言 之前看别人一直模拟登陆人人网,我就想人人网有头有脸的咋那么好模拟登陆进去呢,,今天看了下发现真的超级容易登陆,可能人人太老了也好久不更新了吧.人人网一点防护措施都没有,没有验证码,没有加密,没有 ...

  3. PythonScript_003_通过Cookie模拟登陆人人网

    #!/usr/bin/env python # -*- coding:utf-8 -*-import urllib.request import http.cookiejar # 相当于Python2 ...

  4. python模拟登陆 验证码el_python 模拟登陆github的示例

    # -*- coding: utf-8 -*- # @Author: CriseLYJ # @Date: 2020-08-14 12:13:11 import re import requests c ...

  5. python模拟登陆163邮箱并获取通讯录

    From: http://hi.baidu.com/fc_lamp/blog/item/2466d1096fcc532de8248839.html python模拟登陆163邮箱并获取通讯录 #-*- ...

  6. 潜心专研Python模拟登陆专题,实现网易云音乐自动签到!这项目居然只值三百?

    前言: 时隔三周没有和大家见过面了,最近在研究python模拟登陆专题,话不多说,让我们愉快地开始实现模拟登陆实现网易云自动签到 开发工具 **Python****版本:**3.6.4 相关模块: D ...

  7. python模拟登陆 验证码el_python 模拟登陆163邮箱

    import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium ...

  8. Python模拟登陆大连交通大学教务在线

    Python模拟登陆大连交通大学教务在线,使用wxPython做的界面,urllib2发送数据,可以实现登陆后获取首页登陆数据的功能,目前只做登陆,其他的暂时没做 Python2.7代码 # -*- ...

  9. 使用Python模拟登陆12306并全自动下单

    最近一段时间一直在研究用Python模拟登陆12306网站并自动刷票下单,经过一段时间的摸索,终于完成了代码,实现了12306刷票的功能.话不多说,先给大伙儿看看成果.我录制了一段时间,展示了自动刷票 ...

最新文章

  1. 双圆弧插值算法(一)
  2. 数据持久化框架为什么放弃Hibernate、JPA、Mybatis,最终选择JDBCTemplate!
  3. oracle SQL 命令行(四.安全性自主控制)
  4. 强!分库分表与分布式数据库技术选项分析
  5. 域名的MX设置及校验方法
  6. Java5、Java6、Java7的新特性
  7. 加减法叫做什么运算_【课堂实录】加减法运算的本质(四上)
  8. 诺基亚指控联想侵权;格力回应“被中国移动取消中标资格”;微软暂停更新 Edge 浏览器 | 极客头条...
  9. 生物物种数据库_一个半机械人的物种
  10. 使用MDScratchImageView实现刮奖效果
  11. IDEA格式化HTML页面
  12. 宽带波形测试软件,适用于5G时代的波形测试分析系统是怎样的? - 全文
  13. BLE 配对流程梳理
  14. 两台linux 机器互联,Red Hat Linux9.0下两台机器怎么互联
  15. The Little Schemer Fourth Edition,笔记01
  16. linux 关闭桌面特效,[多图] Ubuntu 中开启3D桌面特效与设置方法
  17. 魅蓝u20android版本,魅族魅蓝U20刷机包 Flyme 6 稳定版系统发布 性能提升 超长待机 全面优化...
  18. apex哪个服务器稳定,apex哪个服务器
  19. 手写数字识别(识别纸上手写的数字)
  20. 视频超分:Zooming Slow-Mo(Zooming Slow-Mo: Fast and Accurate One-Stage Space-Time Video Super-Resolution)

热门文章

  1. 一个一步步进行反向传播的例子
  2. 基于MOS管的防反接电路设计仿真
  3. 北京市2008年住房建设计划
  4. 自动编码器之:去噪自动编码器(DAE)、稀疏自动编码器、变分自动编码器、其他自动编码器
  5. 手机/平板电脑作为pc电脑扩展屏——Splashtop Wired XDisplay使用教程
  6. 企业信用等级评价认证是什么
  7. [转] 如何实现 React 写小程序-1
  8. 树模型和神经网络比较
  9. waiting for /dev/ to be fully populated...
  10. Starting Reload cups, upon starting avahi-daemon to make sure remote queues are populated [fail]