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中使用插入排序算法的简单分析与代码示例
May 04 Python
python实现实时监控文件的方法
Aug 26 Python
如何用itertools解决无序排列组合的问题
May 18 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
Nov 06 Python
Python之web模板应用
Dec 26 Python
使用Python进行AES加密和解密的示例代码
Feb 02 Python
Python格式化输出字符串方法小结【%与format】
Oct 29 Python
python程序变成软件的实操方法
Jun 24 Python
Django之模板层的实现代码
Sep 09 Python
jupyter 使用Pillow包显示图像时inline显示方式
Apr 24 Python
Python如何把十进制数转换成ip地址
May 25 Python
Python Selenium XPath根据文本内容查找元素的方法
Dec 07 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
网络资源
2006/10/09 PHP
PHP4和PHP5共存于一系统
2006/11/17 PHP
php教程之魔术方法的使用示例(php魔术函数)
2014/02/12 PHP
脚本收藏iframe
2006/07/21 Javascript
超轻量级的基于jquery的三级展开列表
2011/04/26 Javascript
JavaScript内核之基本概念
2011/10/21 Javascript
js 剪切板应用clipboardData详细解析
2013/12/17 Javascript
使用JavaScript实现旋转的彩圈特效
2015/06/23 Javascript
阿里巴巴技术文章分享 Javascript继承机制的实现
2016/01/14 Javascript
基于JavaScript实现全选、不选和反选效果
2017/02/15 Javascript
AngularJS页面传参的5种方式
2017/04/01 Javascript
jquery中done和then的区别(详解)
2017/12/19 jQuery
vue2.0 实现导航守卫的具体用法(路由守卫)
2018/05/17 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
2019/03/25 Javascript
微信端调取相册和摄像头功能,实现图片上传,并上传到服务器
2019/05/16 Javascript
JS内置对象和Math对象知识点详解
2020/04/03 Javascript
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
[42:56]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
在Python的循环体中使用else语句的方法
2015/03/30 Python
Python字符串处理函数简明总结
2015/04/13 Python
举例讲解Python中的迭代器、生成器与列表解析用法
2016/03/20 Python
python目录与文件名操作例子
2016/08/28 Python
Python编程判断这天是这一年第几天的方法示例
2017/04/18 Python
python数据类型_元组、字典常用操作方法(介绍)
2017/05/30 Python
Python编程argparse入门浅析
2018/02/07 Python
Flask实现跨域请求的处理方法
2018/09/27 Python
在python带权重的列表中随机取值的方法
2019/01/23 Python
Python GUI编程 文本弹窗的实例
2019/06/11 Python
python文字转语音的实例代码分析
2019/11/12 Python
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
英国最大的女性服装零售商:Dorothy Perkins
2017/03/30 全球购物
就业意向书范文
2014/04/01 职场文书
班委竞选演讲稿
2014/04/28 职场文书
2014年班长个人工作总结
2014/11/14 职场文书
2014年政教处工作总结
2014/12/20 职场文书
90条交通安全宣传标语
2019/10/12 职场文书