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程序运行效率的6个方法
Mar 31 Python
python内存管理分析
Apr 08 Python
django使用图片延时加载引起后台404错误
Apr 18 Python
Python3自动签到 定时任务 判断节假日的实例
Nov 13 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
Jun 27 Python
PowerBI和Python关于数据分析的对比
Jul 11 Python
python2和python3实现在图片上加汉字的方法
Aug 22 Python
Python中顺序表原理与实现方法详解
Dec 03 Python
Python数据可视化:饼状图的实例讲解
Dec 07 Python
详解Python中namedtuple的使用
Apr 27 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
Apr 29 Python
Pytorch生成随机数Tensor的方法汇总
Sep 09 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
PHP 实用代码收集
2010/01/22 PHP
ajax实现无刷新分页(php)
2010/07/18 PHP
详解PHP的Yii框架中扩展的安装与使用
2016/04/01 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
2016/11/25 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
2010/09/19 Javascript
对xmlHttp对象的理解
2011/01/17 Javascript
JS+CSS设置img在DIV中只显示Img垂直居中的部分
2013/10/24 Javascript
JavaScript中字符串(string)转json的2种方法
2015/06/25 Javascript
微信JSSDK上传图片
2015/08/23 Javascript
AngularJS 日期格式化详解
2015/12/23 Javascript
谈谈target=_new和_blank的不同之处
2016/10/25 Javascript
jQuery动态生成不规则表格(前后端)
2017/02/21 Javascript
JS实现根据详细地址获取经纬度功能示例
2019/04/16 Javascript
JS数据类型STRING使用实例解析
2019/12/18 Javascript
vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题
2020/07/31 Javascript
js实现盒子滚动动画效果
2020/08/09 Javascript
html中创建并调用vue组件的几种方法汇总
2020/11/17 Javascript
[06:37]2014DOTA2国际邀请赛 昔日王者渴望重回巅峰
2014/07/12 DOTA
Python中实现从目录中过滤出指定文件类型的文件
2015/02/02 Python
Python3中bytes类型转换为str类型
2018/09/27 Python
Python for循环及基础用法详解
2019/11/08 Python
python使用gdal对shp读取,新建和更新的实例
2020/03/10 Python
python中sympy库求常微分方程的用法
2020/04/28 Python
css3 实现元素弧线运动的示例代码
2020/04/24 HTML / CSS
html5 canvas绘制矩形和圆形的实例代码
2016/06/16 HTML / CSS
儿子婚宴答谢词
2014/01/09 职场文书
2014年教育实习工作总结
2014/11/22 职场文书
《观察物体》教学反思
2016/02/17 职场文书
MySQL分库分表与分区的入门指南
2021/04/22 MySQL
解决Python字典查找报Keyerror的问题
2021/05/26 Python
Python自动化测试PO模型封装过程详解
2021/06/22 Python
nginx的zabbix 5.0安装部署的方法步骤
2021/07/16 Servers
Redis批量生成数据的实现
2022/06/05 Redis
Java实现简单小画板
2022/06/10 Java/Android
Valheim服务器 Mod修改安装教程 【ValheimPlus】
2022/12/24 Servers