python实现人人网留言获取与一键删除

最近有点着迷Python,学习基本语法之后,首先从爬虫开始,看了《使用python登录人人网并发表状态》一文后,很感兴趣,然后又曾经苦于人人网聊天记录删除的繁琐,于是决定写一个聊天记录一键删除的小脚本,好啦,废话不多说:

#encoding:utf-8
import urllib2, urllib, cookielib, re, string

class spider():
    def __init__(self, email, password):
        self.email = email
        self.password = password
        self.domain = 'renren.com'
        try:
            cookie = cookielib.CookieJar()
            cookieProc = urllib2.HTTPCookieProcessor(cookie)
        except:
            raise
        else:
            opener = urllib2.build_opener(cookieProc)
            urllib2.install_opener(opener)

    def login(self):
        print 'login in...'
        url = 'http://www.renren.com/PLogin.do'
        postdata = {
                    'email':self.email,
                    'password':self.password,
                    'domain':self.domain
                    }
        req       = urllib2.Request(url, urllib.urlencode(postdata))
        self.file = urllib2.urlopen(req).read()
        reInfo = re.compile(r"get_check:'(.*?)',get_check_x:'(.*?)'.*?'id':'(.*?)'", re.DOTALL)
        info = reInfo.findall(self.file)
        self.id   = info[0][2]
        self.tok  = info[0][0]
        self.rtk  = info[0][1]
        print 'login in successfully'

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

上面登陆部分代码与参考文章一样,感谢前辈,下面开始分析人人网的聊天记录,通过Firebug抓包分析可以发现,人人网留言http://gossip.renren.com中,因此楼主准备从该网页找出留言的内容及留言的id,但是后来发现每次读出的都是第一页的聊天记录,该网页的

  • 模块中会调用js脚本,切换内容,楼主不知道怎么搞定,有待继续研究。。。。于是楼主取巧了,每次删光第一页,刷新页面,继续删除第一页,只到删除所有留言。

    删除留言的模拟过程通过抓包就可以发现在http://gossip.renren.com/delgossip.do上,向链接发送一个如下数据即可:

            postdata={
                    "id":comment_id,
                    "owner":self.id,
                    "age":"recent",
                    "requestToken":self.tok,
                    "_rtk":self.rtk
                    }
    


     

    其他部分代码如下:

        def getgossiprecent(self):     #获得最近留言
            url="http://gossip.renren.com/#navBar"
            temp_f=urllib2.urlopen(url)
            temp_file=temp_f.read()
            #获取留言总数
            temp_rules=re.compile(r'''.input id=.gossipCount. type=.hidden. name=.. value=.(\d+)''')
            self.gossipCount=temp_rules.findall(temp_file)[0]
            #获取留言
            temp_rules=re.compile(r'''(.+)''')
            result=temp_rules.findall(temp_file)
            #获取留言id
            temp_rules=re.compile(r"delComment\D+(\d+)\D+(\d+)\D+(\d+)..return")
            self.gossip=temp_rules.findall(temp_file)
            self.gossip_id=[]
            self.gossip_guest=[]
            for para in self.gossip:
                self.gossip_id.append(para[0])
                self.gossip_guest.append(para[2])
           
        def delgossip(self,comment_id):     #删除留言
            url="http://gossip.renren.com/delgossip.do"
            postdata={
                    "id":comment_id,
                    "owner":self.id,
                    "age":"recent",
                    "requestToken":self.tok,
                    "_rtk":self.rtk
                    }
            urllib2.urlopen(url,urllib.urlencode(postdata))
    
        def delall(self):
            self.getgossiprecent()
            while string.atoi(self.gossipCount)>0 : 
                for temp_id in self.gossip_id:
                    self.delgossip(temp_id)
                self.getgossiprecent()


     

    写完类对象就一切OK啦

     

    总结:

    第一次写爬虫程序,成就感满满的,人生苦短,请用Python,哈哈

    如何模拟调用脚本,没搞定,另外楼主正则表达式没怎么看,代码中正则表达那部分槽点满满的。

    另外楼主为了测试,把自己人人网聊天记录都删了。。。

     

    打包程序下载地址,有需要的,传送门:http://pan.baidu.com/s/1ntLT2zf

    转载请注明,谢谢

  • 你可能感兴趣的:(python)