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下singleton模式的实现方法
Jul 16 Python
Python守护进程(daemon)代码实例
Mar 06 Python
python使用PIL模块实现给图片打水印的方法
May 22 Python
python通过加号运算符操作列表的方法
Jul 28 Python
Python备份目录及目录下的全部内容的实现方法
Jun 12 Python
python+pandas分析nginx日志的实例
Apr 28 Python
浅谈Python中的全局锁(GIL)问题
Jan 11 Python
python采集百度搜索结果带有特定URL的链接代码实例
Aug 30 Python
python matplotlib饼状图参数及用法解析
Nov 04 Python
分享PyCharm的几个使用技巧
Nov 10 Python
Django项目如何获得SSL证书与配置HTTPS
Apr 30 Python
详解Python魔法方法之描述符类
May 26 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+MYSQL实现用户的增删改查
2015/03/24 PHP
php使用APC实现实时上传进度条功能
2015/10/26 PHP
PHP读MYSQL中文乱码的快速解决方法
2016/10/01 PHP
MooTools 1.2介绍
2009/09/14 Javascript
js 绑定带参数的事件以及手动触发事件
2010/04/27 Javascript
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
jQuery隔行变色与普通JS写法的对比
2013/04/21 Javascript
javascript按位非运算符的使用方法
2013/11/14 Javascript
js函数模拟显示桌面.scf程序示例
2014/04/20 Javascript
理解javascript中的回调函数(callback)
2014/09/02 Javascript
jQuery判断当前点击的是第几个li的代码
2014/09/26 Javascript
基于javascript实现页面加载loading效果
2020/09/15 Javascript
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
2017/01/19 Javascript
Angular.js去除页面中显示的空行方法示例
2017/03/30 Javascript
angular指令笔记ng-options的使用方法
2017/09/18 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
Vue-cli3项目配置Vue.config.js实战记录
2018/07/29 Javascript
Vue+webpack+Element 兼容问题总结(小结)
2018/08/16 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
2019/09/23 Javascript
Python实现的多线程端口扫描工具分享
2015/01/21 Python
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
Python实现控制台输入密码的方法
2015/05/29 Python
对numpy中向量式三目运算符详解
2018/10/31 Python
Python安装Flask环境及简单应用示例
2019/05/03 Python
python 爬取学信网登录页面的例子
2019/08/13 Python
浅谈keras中的目标函数和优化函数MSE用法
2020/06/10 Python
pycharm2020.1.2永久破解激活教程,实测有效
2020/10/29 Python
CSS3线性渐变简单实现以及该属性在浏览器中的不同
2012/12/12 HTML / CSS
HTML5 贪吃蛇游戏实现思路及源代码
2013/09/03 HTML / CSS
希尔顿酒店中国网站:Hilton中国
2017/03/11 全球购物
澳大利亚最受欢迎的女士度假服装:Kabana Shop
2020/10/10 全球购物
PHP中->和=>的意思
2021/03/31 PHP
解析laravel使用workerman用户交互、服务器交互
2021/04/28 PHP
七个非常实用的Python工具包总结
2021/06/15 Python
星际争霸:毕姥爷vs解冻03
2022/04/01 星际争霸
Nginx HTTP跳转至HTTPS
2022/05/15 Servers