-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathqueryip.py
More file actions
62 lines (56 loc) · 1.41 KB
/
Copy pathqueryip.py
File metadata and controls
62 lines (56 loc) · 1.41 KB
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
import requests
from bs4 import BeautifulSoup
# 请求ip的函数
def get_ip():
# 请求输入
addr = input("请输入要查询的ip,输入q退出:")
# 退出检测
if addr == "q":
print("退出查询")
exit(0)
# 切割
ips = addr.split(".")
# 长度必须为4
if len(ips) != 4:
print("输入ip不正确")
return get_ip()
# 必须是int
for i in ips:
try:
i = int(i)
except:
print("输入ip不正确")
return get_ip()
# 范围是0~255,出去的全部不可能
if i < 0 or i > 255:
print("输入的ip不正确")
return get_ip()
# 返回结果
return addr
def query():
# 输入ip
ip = get_ip()
# 设置参数
options = {"ip": ip}
# 查询的api
ipcn = "http://ip.cn/index.php"
# 查询
req = requests.get(ipcn, options)
# 检测返回状态
print("查询状态码", req.status_code)
req.raise_for_status()
# 设置编码
req.encoding = req.apparent_encoding
# 转为soup
soup = BeautifulSoup(req.text, "html.parser")
# 找到结果
result = soup.select("#result")[0]
# 结果转换为soup
soup = BeautifulSoup(str(result), "html.parser")
# 输出结果
for i in soup.find_all("p"):
print(i.text)
print()
if __name__ == '__main__':
while True:
query()