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 的列表遍历删除实现代码
Apr 12 Python
Python中MySQL数据迁移到MongoDB脚本的方法
Apr 28 Python
Python使用matplotlib实现绘制自定义图形功能示例
Jan 18 Python
python的格式化输出(format,%)实例详解
Jun 01 Python
python-opencv颜色提取分割方法
Dec 08 Python
对dataframe数据之间求补集的实例详解
Jan 30 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
May 15 Python
python3 mmh3安装及使用方法
Oct 09 Python
浅谈Tensorflow 动态双向RNN的输出问题
Jan 20 Python
Python tornado上传文件的功能
Mar 26 Python
django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例
May 12 Python
Pandas对每个分组应用apply函数的实现
Dec 13 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正则走开
2008/03/15 PHP
PHP实现事件机制的方法
2015/07/10 PHP
php验证身份证号码正确性的函数
2016/07/20 PHP
Yii2基于Ajax自动获取表单数据的方法
2016/08/10 PHP
php json中文编码为null的解决办法
2016/12/14 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
Laravel利用gulp如何构建前端资源详解
2018/06/03 PHP
JQuery对class属性的操作实现按钮开关效果
2013/10/11 Javascript
100个不能错过的实用JS自定义函数
2014/03/05 Javascript
javascript时间函数大全
2014/06/30 Javascript
基于jQuery Circlr插件实现产品图片360度旋转
2015/09/20 Javascript
纯JavaScript代码实现移动设备绘图解锁
2015/10/16 Javascript
javascript弹性运动效果简单实现方法
2016/01/08 Javascript
javascript简易画板开发
2020/04/12 Javascript
jQuery Easyui加载表格出错时在表格中间显示自定义的提示内容
2016/12/08 Javascript
JS数组去重常用方法实例小结【4种方法】
2018/05/28 Javascript
在React项目中使用Eslint代码检查工具及常见问题
2018/10/10 Javascript
Angular请求防抖处理第一次请求失效问题
2019/05/17 Javascript
Vue实现固定定位图标滑动隐藏效果
2019/05/30 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
2019/08/23 Javascript
[00:44]华丽开场!DOTA2勇士令状带来全新对阵画面
2019/05/15 DOTA
python创建临时文件夹的方法
2015/07/06 Python
利用Pandas读取文件路径或文件名称包含中文的csv文件方法
2018/07/04 Python
在python中使用nohup命令说明
2020/04/16 Python
使用pth文件添加Python环境变量方式
2020/05/26 Python
Python将字典转换为XML的方法
2020/08/01 Python
Python如何解除一个装饰器
2020/08/07 Python
CSS3实现瀑布流布局与无限加载图片相册的实例代码
2016/12/22 HTML / CSS
管理专员自荐信
2014/01/26 职场文书
2014年大学生就业规划书
2014/04/04 职场文书
关于青春的演讲稿500字
2014/08/22 职场文书
幼儿园老师新年寄语2015
2014/12/08 职场文书
因公司原因离职的辞职信范文
2015/05/12 职场文书
省级三好学生主要事迹材料
2015/11/03 职场文书
Nginx隐藏式跳转(浏览器URL跳转后保持不变)
2022/04/07 Servers
html中相对位置与绝对位置的具体使用
2022/05/15 HTML / CSS