-
Notifications
You must be signed in to change notification settings - Fork 1
/
addBlack.py
106 lines (89 loc) · 2.65 KB
/
addBlack.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#coding:utf-8
import time
import re
import json
import urllib
import sys
import os
from bs4 import BeautifulSoup
import requests
class adder:
def __init__(self, kw):
self.COOKIE = {}#自行添加cookie
self.kw = kw
KW = urllib.quote(kw)
self.addBlackURL = 'http://tieba.baidu.com/bawu2/platform/addBlack'
self.listMemberURL = 'http://tieba.baidu.com/bawu2/platform/listMember?ie=utf-8&word=' + KW + '&stype=uname&svalue='
self.memberBlackURL = 'http://tieba.baidu.com/bawu2/platform/listBlackUser?ie=utf-8&word=' + KW + '&stype=uname&svalue='
def beginAdd(self, ID):
memberURL = self.listMemberURL + urllib.quote(ID)
r = self.getURL(memberURL)
soup = BeautifulSoup(r.text, 'html.parser')
info = re.search("badge bg_lv1.+", str(soup))
if info:
info = info.group()
else:
black = self.isBlack(ID)
if black:
print ID + ' is in black list'
else:
print ID + ' is not the member of ' + self.kw
return 'save'
return
tbs = re.search('tbs\":\".+?\"', str(soup)).group()
tbs = tbs.split('\"')[-2]
userID = re.search('id=\".+?\"', info).group()
userID = filter(str.isdigit, userID)
addInfo = {'user_id':userID, 'tbs':tbs, 'word':self.kw, 'ie':'utf-8'}
r = self.postURL(self.addBlackURL,addInfo)
print r.json()[u'errmsg']
if r.json()[u'errmsg'] != 'success':
return 'save'
def isBlack(self, ID):
memberBlackURL = self.memberBlackURL + urllib.quote(ID)
r = self.getURL(memberBlackURL)
soup = BeautifulSoup(r.text, 'html.parser')
if re.search(ID, str(soup)):
return True
def postURL(self, url, data):
for tryTime in xrange(4):
try:
r = requests.post(url, cookies = self.COOKIE, timeout = 3, data = data)
except Exception, e:
pass
return r
def getURL(self, url):
for tryTime in xrange(4):
try:
r = requests.get(url, cookies = self.COOKIE, timeout = 3)
except Exception, e:
pass
return r
def readTxt():
path = '/Volumes/未命名/Tieba/blockList/'
fidSave = open('save.txt', 'a')
aer = adder('厦门大学')
content = ''
for filename in os.listdir(path):
if filename == '.DS_Store' or filename == '1.txt':
continue
fileHandle = open(path + '/' + filename, 'r')
blocklist = fileHandle.readlines()
for content in blocklist:
try:
[userName, tbs, pid] = content.strip().split('\t')
except Exception, e:
userName = content.strip()
save = aer.beginAdd(userName)
if save == 'save':
content = content + userName + '\t' + tbs + '\t' + pid + '\n'
else:
content = content + userName + '\n'
time.sleep(3)
fidSave.write(content)
content = ''
fileHandle.close()
os.remove(path + filename)
fidSave.close()
if __name__ == '__main__':
readTxt()