-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsubChinese.py
executable file
·94 lines (74 loc) · 2.13 KB
/
subChinese.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
#!/usr/bin/env python
#encoding=utf-8
import sys
import os
import requests
import subprocess
from lxml import etree
if 2 != len(sys.argv):
print "arg less 2!"
sys.exit()
def isIp(Str):
tmp = Str.split('.')
if 4 != len(tmp):
return False
for i in tmp:
if False == i.isdigit():
return False
return True
def readFileLineByLine2Set(fileName):
result = set()
with open(fileName, 'r') as f:
L = f.readline().strip()
while L:
result.add(L)
L = f.readline().strip()
f.close()
return result
def getTarget(fileName):
return readFileLineByLine2Set(fileName)
def getIpsAddressFromNet(target):
result = ''
ip = target.split(':')[0]
if isIp(ip):
req = 'http://www.ip138.com/ips1388.asp?ip=' + ip + '&action=2'
resp = ''
try:
resp = requests.get(req)
except Exception, e:
sys.stdout.write(str(e) + '\n')
return result
html = etree.HTML(resp.content)
lines = html.xpath('//li')
if 1 < len(lines):
tmp = lines[0].text.encode('utf-8')
tmp2 = tmp.split(':')
if 2 <= len(tmp2):
result = tmp2[1]
return result
def getCitys():
return readFileLineByLine2Set('/opt/share/city.txt')
def getProvince():
return readFileLineByLine2Set('/opt/share/province.txt')
def getArea():
return readFileLineByLine2Set('/opt/share/area.txt')
def isChineseNet(srcTarget, ChineseCitys):
addr = getIpsAddressFromNet(srcTarget)
if '' == addr:
return False
for i in ChineseCitys:
if i in addr:
return True
return False
def subChineseAddress(targetList, ChineseCitys):
#result = []
for i in targetList:
if not isChineseNet(i, ChineseCitys):
#result.append(i)
print i
#return result
targetList = list(getTarget(sys.argv[1]))
ChineseCitys = list(getCitys() | getProvince() | getArea())
ChineseCitys.append('中国')
#result = subChineseAddress(targetList, ChineseCitys)
subChineseAddress(targetList, ChineseCitys)