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 相关文章推荐
pymssql ntext字段调用问题解决方法
Dec 17 Python
使用Python将数组的元素导出到变量中(unpacking)
Oct 27 Python
Python中装饰器学习总结
Feb 10 Python
python获取url的返回信息方法
Dec 17 Python
Python JSON格式数据的提取和保存的实现
Mar 22 Python
python进程和线程用法知识点总结
May 28 Python
Django框架配置mysql数据库实现过程
Apr 22 Python
OpenCV利用python来实现图像的直方图均衡化
Oct 21 Python
在pycharm创建scrapy项目的实现步骤
Dec 01 Python
Python机器学习工具scikit-learn的使用笔记
Jan 28 Python
matplotlib之pyplot模块实现添加子图subplot的使用
Apr 25 Python
python绘制云雨图raincloud plot
Aug 05 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之第十天
2006/10/09 PHP
php实现图片上传时添加文字和图片水印技巧
2020/04/18 PHP
PHP中的正则表达式实例详解
2017/04/25 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
在JavaScript中操作时间之getUTCDate()方法的使用
2015/06/10 Javascript
基于js实现checkbox批量选中操作
2016/11/22 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
2016/12/14 Javascript
js实现的简练高效拖拽功能示例
2016/12/21 Javascript
JS简单生成随机数(随机密码)的方法
2017/05/11 Javascript
vue.js+Echarts开发图表放大缩小功能实例
2017/06/09 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
2017/12/26 Javascript
如何使用 vue + d3 画一棵树
2018/12/03 Javascript
微信小程序实现发送模板消息功能示例【通过openid推送消息给用户】
2019/05/05 Javascript
使用layui定义一个模块并使用的例子
2019/09/14 Javascript
JavaScript中的this原理及6种常见使用场景详解
2020/02/14 Javascript
Handtrack.js库实现实时监测手部运动(推荐)
2021/02/08 Javascript
[01:51]2014DOTA2西雅图邀请赛 MVP 外卡赛black场间采访
2014/07/09 DOTA
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
python下载文件时显示下载进度的方法
2015/04/02 Python
Python脚本实现虾米网签到功能
2016/04/12 Python
Python的for和break循环结构中使用else语句的技巧
2016/05/24 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
2019/11/25 Python
HTML5 新事件 小结
2009/07/16 HTML / CSS
巴西葡萄酒商店:Divvino
2020/02/22 全球购物
Solaris操作系统的线程机制
2012/12/23 面试题
瀑布模型都有哪些优缺点
2014/06/23 面试题
财务经理的岗位职责
2013/12/17 职场文书
报到证丢失证明
2014/01/11 职场文书
市级三好学生评语
2014/12/29 职场文书
财政局个人年终总结
2015/03/03 职场文书
Python anaconda安装库命令详解
2021/10/16 Python
FFmpeg视频处理入门教程(新手必看)
2022/01/22 杂记
Spring boot实现上传文件到本地服务器
2022/08/14 Java/Android