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,但是后来发现每次读出的都是第一页的聊天记录,该网页的<li>模块中会调用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‘‘‘<span style="color:#000000"><span style="color:#000000">(.+)</span></span>‘‘‘)
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

转载请注明,谢谢

时间: 2024-12-14 19:20:20

python实现人人网留言获取与一键删除的相关文章

python实现人人网登录的例子

例子,python实现登录人人网.原文地址:http://www.jbxue.com/article/python/22994.html #!/usr/bin/python # www.jbxue.com import re import urllib2 import cookielib def renren(): cj = cookielib.LWPCookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)

python编写的自动获取代理IP列表的爬虫-chinaboywg-ChinaUnix博客

python编写的自动获取代理IP列表的爬虫-chinaboywg-ChinaUnix博客 undefined Python多线程抓取代理服务器 | Linux运维笔记 undefined java如果模拟请求重启路由器(网络爬虫常用),还有java如何下载图片 - baidu_nod的专栏 - 博客频道 - CSDN.NET undefined [多线程数据采集]使用Jsoup抓取数据+破解屏蔽ip访问. - MiniBu - 开源中国社区 undefined 单linux服务器同时拨多条AD

转 python通过win32api轻松获取控件的属性值

python通过win32api轻松获取控件的属性值 2014-08-29 15:26:56|  分类: 自动化测试 |  标签:win32  |举报|字号 订阅 下载LOFTER我的照片书  | 1.如何利用句柄操作windows窗体 首先,获得窗体的句柄  win32api.FindWindows() 第二,获得窗体中控件的id号,spy++ 第三,根据控件的ID获得控件的句柄(hwnd)  GetDlgItem(hwnd,loginID) 最后,利用控件句柄进行操作 python可以通过w

Linux服务器一键删除文件夹SSH命令

Linux服务器管理不像Windows服务器管理那么方便,当然Linux也可以直观可视化操作,本人习惯使用SSH命令管理操作,常常会碰到网站产生 大量垃圾文件的苦恼,直接登录FTP删除的话,曾经试过删了一整天都删不完,FTP还常常断线.下面分享Linux服务器一键删除文件夹SSH命令的操作 方法: 下载Putty软件,双击打开,输入你的主机IP地址,连接类型选择SSH打开. 选择你要删除的文件夹,操作演示以网站http://www.war126.com为例,通过FTP连接到网站,可以看到网站的所

iOS 图片本地存储、本地获取、本地删除

在iOS开发中.经常用到图片的本地化. iOS 图片本地存储.本地获取.本地删除,可以通过以下类方法实现. p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #008400; background-color: #ffffff } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000; background-color

python封装configparser模块获取conf.ini值(优化版)

昨天晚上封装了configparser模块,是根据keyname获取的value.python封装configparser模块获取conf.ini值 我原本是想通过config.ini文件中的section和keyname获取value的,前两天怎么都调试不通过.今天百度了一下,有人通过字典的方式把我的和这个想法实现了,我把这个例子修改了一下,代码如下,并通过测试,以后可以用在自动化测试框架中: 1 #coding:utf-8 2 import os 3 import ConfigParser

python扫描proxy并获取可用代理ip列表

mac或linux下可以work的代码如下: # coding=utf-8 import requests import re from bs4 import BeautifulSoup as bs import Queue import threading import random import re headers_useragents = [] headers_referers = [] headers_referers.append('http://www.google.com/?q=

Python 用exec来获取字符串所对应的字典

Python 用exec来获取字符串所对应的字典 Python exec 问题的提出 想要遍历两个结构相似的字典,但是不想采用字典内嵌套字典的方式,所以想要通过一个列表,该列表包含字典名称.也就是通过字典名称对应的字符串来获取该字典. 解决方式 采用exec函数 exec 函数可以执行字符串 在matlab中也有对应的函数 具体代码 def build_person(first_name, last_name, age=''): """返回一个字典,其中包含有关一个人的信息&

QQ空间一键删除留言破解软件

该破解软件批量删除空间说说.日志.留言.相册.分享.访客.微博等 由于腾讯限制,软件一天只能删除一两百条 ,无需告诉别人密码 ,自己即可删除,保护自己空间隐私不外泄.软件破解图如下: 破解版软件下载地址: 下载地址1  下载地址2   下载地址3