python 批量查询网页导出结果_【Python】批量查询-提取站长之家IP批量查询的结果加强版本v3.0...

1、工具说明

写报告的时候为了细致性,要把IP地址对应的地区给整理出来。500多条IP地址找出对应地区复制粘贴到报告里整了一个上午。

为了下次更好的完成这项重复性很高的工作,所以写了这个小的脚本。

某个项目每次改需求都是这么突然。 应 XX 每天要求各种省份域名统计,再加强下Domain to IP to 地区的脚本。

Domain2ip2locality.py v2.0 写入到XLS中

Domain2ip2locality.py v3.0 增加域名解析IP、IP解析地区的部分

2、使用方法

把IP写到.txt文件中就可以了,输出到D:\0utCode_ip_domain\目录内的IP.xls内。代码注释中已经说明!

#-*-coding:utf-8-*-

import sys

import os

import requests

from bs4 import BeautifulSoup

import tablib

import socket

import re

# Domain2ip2locality.py v3.0

# 作者:zzzhhh

# 2017-9-30

# 提取站长之家IP批量查询的结果加强版本-写入到XLS中

# 增加域名解析IP、IP解析地区的部分

## 默认存放路径D:\\0utCode_ip_domain\\ip.xls

path = "D:\\0utCode_ip_domain\\" # 存放路径

filename = "ip" # 文件名称

dataset1 = tablib.Dataset() # 数据集合

ip_list = [] # IP列表

# 写XLS

def into_els(old_ip,new_ip,taglocality):

headers = ('域名','ip', '地区') # 首行字段

dataset1.headers = headers

dataset1.append((old_ip,new_ip,taglocality))

# 判断是否是IP

def DetermineIPorDomain(unknow):

# IP判断的正则

reip = r'\d+\.\d+\.\d+\.\d+'

ip = re.findall(reip, unknow)

if len(ip)>0:

return ip

else:

ip = www_ip(unknow)

return ip

# 域名转换IP

def www_ip(name):

try:

result = socket.getaddrinfo(name,None)

return result[0][4][0]

except:

return 0

#匹配出IP地址函数

def matchIP (new_ip,old_ip):

url = "http://ip.chinaz.com/"

try:

url = url+str(new_ip)

except:

print url

## 根据传入的IP地址截取出地区

wbdata = requests.get(url).text

soup = BeautifulSoup(wbdata, 'lxml')

for tag in soup.find_all('span', class_='Whwtdhalf w50-0'):

tag_extractl = tag.get_text().encode('utf-8')

if tag_extractl.find("IP的物理位置"): #过滤掉【IP的物理位置】这个字符

print "%s||%s||%s" % (old_ip,new_ip,tag.get_text()) #输出域名,IP,地区

into_els(old_ip,new_ip,tag.get_text()) #写数据到数据集合中

#读取文件函数

def read_file(file_path):

# 判断文件路径是否存在,如果不存在直接退出,否则读取文件内容

if not os.path.exists(file_path):

print 'Please confirm correct filepath !'

sys.exit(0)

else:

with open(file_path, 'r') as source:

for line in source:

ip_list.append(line.rstrip('\r\n').rstrip('\n'))

# 遍历IP,通过站长之家查询IP对应地区

for ip in ip_list:

to_ip = DetermineIPorDomain(ip) # 转换

matchIP(to_ip,ip)

# 写文件到Excel

hFile = open(path + filename + '.xls', "wb")

hFile.write(dataset1.xls)

hFile.close()

if __name__ == '__main__':

file_str=raw_input('Input file ip.txt filepath eg:D:\\\\test.txt \n')

#file_str = "D:\\WebUrl.txt"

read_file(file_str) #读取文件

3、 代码效果

用Excel自定义排序就可以可以排序某个特定省份了。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值