python实现自动登录人人网并采集信息的方法


Posted in Python onJune 28, 2015

本文实例讲述了python实现自动登录人人网并采集信息的方法。分享给大家供大家参考。具体实现方法如下:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import re
import urllib2
import urllib
import cookielib
class Renren(object):
  def __init__(self):
    self.name = self.pwd = self.content = self.domain = self.origURL = ''
    self.operate = ''#登录进去的操作对象
    self.cj = cookielib.LWPCookieJar()
    try: 
      self.cj.revert('./renren.coockie') 
    except Exception,e:
      print e
    self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cj))
    urllib2.install_opener(self.opener)
  def setinfo(self,username,password,domain,origURL):
    '''设置用户登录信息'''
    self.name = username
    self.pwd = password
    self.domain = domain
    self.origURL = origURL
  def login(self):
    '''登录人人网'''
    params = {
      'domain':self.domain,
      'origURL':self.origURL,
      'email':self.name, 
      'password':self.pwd}
    print 'login.......'
    req = urllib2.Request( 
      'http://www.renren.com/PLogin.do',
      urllib.urlencode(params)
    )
    self.file=urllib2.urlopen(req).read()    
    newsfeed = open('news.html','w')
    try:
      newsfeed.write(self.file)
    except Exception, e:
      newsfeed.close()
    self.operate = self.opener.open(req) 
    print type(self.operate)
    print self.operate.geturl()
    if self.operate.geturl(): 
      print 'Logged on successfully!'
      self.cj.save('./renren.coockie')
      self.__viewnewinfo()
    else:
      print 'Logged on error'
  def __viewnewinfo(self):
    '''查看好友的更新状态'''
    self.__caiinfo()
  def __caiinfo(self):
    '''采集信息'''    
    h3patten = re.compile('<article>(.*?)</article>')#匹配范围
    apatten = re.compile('<h3.+>(.+)</h3>:')#匹配作者
    cpatten = re.compile('</a>(.+)\s')#匹配内容 
    content = h3patten.findall(self.file)
    print len(content)  
    infocontent = self.operate.readlines()
    print type(infocontent)
    print 'friend newinfo:' 
    for i in infocontent:
      content = h3patten.findall(i)
      if len(content) != 0:
        for m in content:
          username = apatten.findall(m)
          info = cpatten.findall(m)
          if len(username) !=0:
            print username[0],'说:',info[0]
            print '----------------------------------------------'
          else:
            continue
ren = Renren()
username = 'username'#你的人人网的帐号
password = 'password'#你的人人网的密码
domain = 'www.renren.com'#人人网的地址
origURL = 'http://www.renren.com/home'#人人网登录以后的地址
ren.setinfo(username,password,domain,origURL)
ren.login()

希望本文所述对大家的Python序设计有所帮助。

Python 相关文章推荐
Python Matplotlib库入门指南
May 18 Python
编写自定义的Django模板加载器的简单示例
Jul 21 Python
Python函数中*args和**kwargs来传递变长参数的用法
Jan 26 Python
Python探索之SocketServer详解
Oct 28 Python
Python 统计字数的思路详解
May 08 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
Jul 06 Python
Python之使用adb shell命令启动应用的方法详解
Jan 07 Python
Python实现个人微信号自动监控告警的示例
Jul 03 Python
Python中模块(Module)和包(Package)的区别详解
Aug 07 Python
使用python实现时间序列白噪声检验方式
Jun 03 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
Feb 16 Python
利用Python实现Picgo图床工具
Nov 23 Python
Python实现将绝对URL替换成相对URL的方法
Jun 28 #Python
python实现将html表格转换成CSV文件的方法
Jun 28 #Python
python实现根据主机名字获得所有ip地址的方法
Jun 28 #Python
python自动zip压缩目录的方法
Jun 28 #Python
python查找指定具有相同内容文件的方法
Jun 28 #Python
python中getaddrinfo()基本用法实例分析
Jun 28 #Python
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
Jun 28 #Python
You might like
咖啡豆要不要放冰箱的原因
2021/03/04 冲泡冲煮
用PHP连接Oracle for NT 远程数据库
2006/10/09 PHP
怎么样可以把 phpinfo()屏蔽掉?
2006/11/24 PHP
MySQL授权问题总结
2007/05/06 PHP
PHP 5.0对象模型深度探索之类的静态成员
2008/03/27 PHP
PHP下escape解码函数的实现方法
2010/08/08 PHP
JavaScript中Math对象使用说明
2008/01/16 Javascript
基于jquery的direction图片渐变动画效果
2010/05/24 Javascript
js返回上一页并刷新代码整理
2012/12/21 Javascript
解决node-webkit 不支持html5播放mp4视频的方法
2015/03/11 Javascript
AngularJS基础学习笔记之表达式
2015/05/10 Javascript
JS点击某个图标或按钮弹出文件选择框的实现代码
2016/09/27 Javascript
Express框架之connect-flash详解
2017/05/31 Javascript
JS获取当前地理位置的方法
2017/10/25 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
2017/11/03 Javascript
基于jQuery实现Ajax验证用户名是否可用实例
2018/03/25 jQuery
vue加载完成后的回调函数方法
2018/09/07 Javascript
vue组件tabbar使用方法详解
2018/11/06 Javascript
Preload基础使用方法详解
2020/02/03 Javascript
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
Vue2.x-使用防抖以及节流的示例
2021/03/02 Vue.js
Python检测网络延迟的代码
2018/05/15 Python
Python2与Python3的区别实例总结
2019/04/17 Python
Django web框架使用url path name详解
2019/04/29 Python
Python配置虚拟环境图文步骤
2019/05/20 Python
pycharm中显示CSS提示的知识点总结
2019/07/29 Python
pytorch 中的重要模块化接口nn.Module的使用
2020/04/02 Python
Python机器学习工具scikit-learn的使用笔记
2021/01/28 Python
pandas数据分组groupby()和统计函数agg()的使用
2021/03/04 Python
2014迎新年晚会策划方案
2014/02/23 职场文书
缓刑人员思想汇报500字
2014/09/12 职场文书
个人遵守党的政治纪律情况对照检查材料思想汇报
2014/09/25 职场文书
乡镇镇长个人整改措施
2014/10/01 职场文书
驾驶员安全责任协议书
2016/03/22 职场文书
导游词之鲁迅祖居
2019/10/17 职场文书
Pycharm连接远程服务器并远程调试的全过程
2021/06/24 Python