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批量导出导入MySQL用户的方法
Nov 15 Python
Python2.x版本中cmp()方法的使用教程
May 14 Python
Python利用Nagios增加微信报警通知的功能
Feb 18 Python
Python 常用string函数详解
May 30 Python
python中子类调用父类函数的方法示例
Aug 18 Python
Python 循环语句之 while,for语句详解
Apr 23 Python
Python面向对象之反射/自省机制实例分析
Aug 24 Python
详谈tensorflow gfile文件的用法
Feb 05 Python
Python守护进程实现过程详解
Feb 10 Python
Python selenium爬取微信公众号文章代码详解
Aug 12 Python
Python+Xlwings 删除Excel的行和列
Dec 19 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
Feb 06 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中imagick函数的中文解释
2015/01/21 PHP
jquery 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
2010/04/18 Javascript
读取input:file的路径并显示本地图片的方法
2013/09/23 Javascript
JQuery动画与特效实例分析
2015/02/02 Javascript
javascript实现复选框超过限制即弹出警告框的方法
2015/02/25 Javascript
Node.js connect ECONNREFUSED错误解决办法
2016/09/15 Javascript
最常见和最有用的字符串相关的方法详解
2017/02/06 Javascript
React组件之间的通信的实例代码
2017/06/27 Javascript
利用node.js+mongodb如何搭建一个简单登录注册的功能详解
2017/07/30 Javascript
浅谈Vue.js组件(二)
2019/04/09 Javascript
[02:40]DOTA2英雄基础教程 巨牙海民
2013/12/23 DOTA
[45:32]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
50行代码实现贪吃蛇(具体思路及代码)
2013/04/27 Python
在Docker上开始部署Python应用的教程
2015/04/17 Python
python交互式图形编程实例(一)
2017/11/17 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
2018/04/28 Python
python pandas库中DataFrame对行和列的操作实例讲解
2018/06/09 Python
selenium+python截图不成功的解决方法
2019/01/30 Python
python web框架中实现原生分页
2019/09/08 Python
Python OpenCV视频截取并保存实现代码
2019/11/30 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
Python脚本去除文件的只读性操作
2020/03/05 Python
pycharm 实现本地写代码,服务器运行的操作
2020/06/08 Python
Python Selenium XPath根据文本内容查找元素的方法
2020/12/07 Python
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
英国工艺品购物网站:Minerva Crafts
2018/01/29 全球购物
工程质量承诺书范文
2014/03/27 职场文书
《翻越远方的大山》教学反思
2014/04/13 职场文书
乡镇个人对照检查材料
2014/08/22 职场文书
六查六看个人剖析材料
2014/10/14 职场文书
农业项目投资意向书
2015/05/09 职场文书
利用Python判断整数是否是回文数的3种方法总结
2021/07/07 Python
mysql 生成连续日期及变量赋值
2022/03/20 MySQL
Java 超详细讲解ThreadLocal类的使用
2022/04/07 Java/Android
三种方式清除vue路由跳转router-link的历史记录
2022/04/10 Vue.js