使用python在校内发人人网状态(人人网看状态)

yipeiwu_com6年前Python基础

复制代码 代码如下:

#_*_coding:utf_8_

from sgmllib import SGMLParser
import sys, urllib2, urllib, cookielib
import datetime, time

class spider(SGMLParser):

    def __init__(self, email, password):
        SGMLParser.__init__(self)

        self.email = email
        self.password = password
        self.domain = 'renren.com'

        try:
            cookie = cookielib.CookieJar()
            # a class to handle HTTP cookies
            cookieProc = urllib2.HTTPCookieProcessor(cookie)
        except:
            raise
        else:
            opener = urllib2.build_opener(cookieProc)
            urllib2.install_opener(opener)      

    def login(self):
        print '开始登录'
        url = 'http://www.renren.com/PLogin.do'
        #url = 'http://www.renren.com/SysHome.do'
        postdata = {
                    'email': self.email,
                    'password': self.password,
                    'domain': self.domain 
                   }
        # 一般情况下引入urllib2的地方都需要引入urllib,因为需要urlencode()
        req = urllib2.Request(
                              url,
                              urllib.urlencode(postdata)           
                             )

        self.file = urllib2.urlopen(req).read()
        # urlopen后 成功后进入首页 因此self.file的内容就是首页的html文件的内容
        # print self.file

        idPos = self.file.index("'id':'")
        self.id = self.file[idPos+6:idPos+15]

        tokPos = self.file.index("get_check:'")
        self.tok = self.file[tokPos+11:tokPos+21]

        rtkPos = self.file.index("get_check_x:'")
        self.rtk = self.file[rtkPos+13:rtkPos+21]

    def publish(self, content):
        url1 = 'http://shell.renren.com/' +self.id+ '/status'
        print 'self.id = ' , self.id
        postdata = {
                  'content': content,
                  'hostid': self.id,
                  'requestToken': self.tok,
                  '_rtk': self.rtk,
                  'channel': 'renren',
                  }
        req1 = urllib2.Request(
                            url1,
                            urllib.urlencode(postdata)           
                            )
        self.file1 = urllib2.urlopen(req1).read()

        print datetime.datetime.now()
        print '刚才账号 %s发了一条状态' % self.email 
        print '内容为: %s' % postdata.get('content', '')

renrenspider = spider('qich555550@163.com', 'qishibo123')
renrenspider.login()
#content = raw_input('请输入状态的内容:')
contents =["祝","各","位","同","学","盆","友","在","新","的","一","年","里","身","体","健","康","万","事","如","意","不小心刷屏了,望大家谅解"]
#renrenspider.publish(content)
#content = "新年快乐"
#renrenspider.publish(content)
#renrenspider.publish(content.decode('gb2312').encode('utf-8'))

for content in contents:
    renrenspider.publish(content)

用这个程序就可以发状态刷屏了,只不过校内的状态不支持具体时间,看不出效果来,不然每隔两秒一条状态应该会让人惊讶的 

相关文章

vc6编写python扩展的方法分享

系统环境:VC6 + Python-2.5.4 1、下载Python-2.5.4源码。 2、解压,打开D:\Python-2.5.4\PC\VC6\pcbuild.dsw,编译,D:\P...

详解一种用django_cache实现分布式锁的方式

问题背景 在项目开发过程中,我遇到一个需求:对于某条记录,一个用户对它进行操作时会持续比较久,希望在一个用户的操作期间,不允许有另一个用户操作它,否容易会出现混乱。 在与同事们讨论后,想...

pytorch 使用单个GPU与多个GPU进行训练与测试的方法

如下所示: device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")#第一行代码 model.t...

Python文件和目录操作详解

Python文件和目录操作详解

一、文件的打开和创建 1、打开 复制代码 代码如下: open(file,mode): >>>fo = open('test.txt', 'r') >>&g...

Python中%是什么意思?python中百分号如何使用?

常见的两种 第一种:数值运算 1 % 3 是指模运算, 取余数(remainder) >>> 7%2 1 # -*- coding: utf-8 -*...