【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自定义排序就可以可以排序某个特定省份了。。。




【Python】批量查询-提取站长之家IP批量查询的结果加强版本v3.0的更多相关文章
- 【Python】批量查询-提取站长之家IP批量查询的结果v1.0
0 前言 写报告的时候为了细致性,要把IP地址对应的地区给整理出来.500多条IP地址找出对应地区复制粘贴到报告里整了一个上午. 为了下次更好的完成这项重复性很高的工作,所以写了这个小的脚本. 1 使 ...
- 提取站长之家IP批量查询
1.工具说明 写报告的时候为了细致性,要把IP地址对应的地区给整理出来.500多条IP地址找出对应地区复制粘贴到报告里整了一个上午. 为了下次更好的完成这项重复性很高的工作,所以写了这个小的脚本. 使 ...
- 【python数据挖掘】批量爬取站长之家的图片
概述: 站长之家的图片爬取 使用BeautifulSoup解析html 通过浏览器的形式来爬取,爬取成功后以二进制保存,保存的时候根据每一页按页存放每一页的图片 第一页:http://sc.china ...
- Python 超简单 提取音乐高潮(附批量提取)
很多时候我们想提取某首歌的副歌部分(俗称 高潮部分),只能手动直接卡点剪切,但是对于大批量的获取就很头疼,如何解决? 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后 ...
- python requests库爬取网页小实例:ip地址查询
ip地址查询的全代码: 智力使用ip183网站进行ip地址归属地的查询,我们在查询的过程是通过构造url进行查询的,将要查询的ip地址以参数的形式添加在ip183url后面即可. #ip地址查询的全代 ...
- [1]IP地址查询
今天起开始玩百度APIStore里面的免费API.以前用过的有12306的:数据.接口,有时间整理出来,12306的有点乱就是了.还有扇贝以及有道的API,之前用在留言板里自动翻译,公司用过百度地图以 ...
- 利用Python制作简单的小程序:IP查看器
前言 说实话,查看电脑的IP,也挺无聊的,但是够简单,所以就从这里开始吧.IP地址在操作系统里就可以直接查看.但是除了IP地址,我们也想通过IP获取地理地址和网络运营商情况.IP地址和地理地址并没有固 ...
- python扫描proxy并获取可用代理ip列表
mac或linux下可以work的代码如下: # coding=utf-8 import requests import re from bs4 import BeautifulSoup as bs ...
- 【学习】Python进行数据提取的方法总结【转载】
链接:http://www.jb51.net/article/90946.htm 数据提取是分析师日常工作中经常遇到的需求.如某个用户的贷款金额,某个月或季度的利息总收入,某个特定时间段的贷款金额和笔 ...
随机推荐
- mysql中存储过程
存储过程procedure 存储过程,其本质还是函数——但其规定:不能有返回值: 定义形式: 说明: 1,in:用于设定该变量是用来“接收实参数据”的,即“传入”:默认不写,就是in 2,out:用于 ...
- 洛谷P3474 KUP-Plot purchase
简要题意: 给你一个n * n的非负矩阵,求问是否有子矩阵满足和在[k, 2k]之间.若有输出方案.n<=2000. 解: 首先n4暴力很好想(废话),然后发现可以优化成n3log2n,但是还是 ...
- easyui-treegrid的案例
1.前台html <%@ page language="java" contentType="text/html; charset=UTF-8" page ...
- asp 调用 vb(activex dll) ,参数传递(传引用)需要注意
今天上午测试 vb 与 c(dll) 之间交互,传递参数的时候,没遇到什么太大的问题. 下午在asp中调用vb(activex dll)时, 在asp代码中传参数到 vb(dll)中时,遇到问题了. ...
- vue-devtools chrome 开发工具
1.github下载地址:https://github.com/vuejs/vue-devtools 有Git的同学直接 Git clone https://github.com/vuejs/vue- ...
- LR和SVM的区别
一.相同点 第一,LR和SVM都是分类算法(SVM也可以用与回归) 第二,如果不考虑核函数,LR和SVM都是线性分类算法,也就是说他们的分类决策面都是线性的. 这里要先说明一点,那就是LR也是可以用核 ...
- check nginx配置文件错误:[emerg]: getpwnam(“nginx”) failed
1.错误提示: [root@server include]# /application/nginx/sbin/nginx -t -c /applications/nginx/nginx/nginx.c ...
- 过滤选择器first与子元素过滤选择器first-child的区别
1.表格代码如下: <table id="table"> <tr> <td>id</td> <td>name</t ...
- oracle全文检索【转】【补】
全文检索 oracle对使用几十万以上的数据进行like模糊查询速度极差,包括 like 'AAA%' ,like '%AAA',like '%AAA%',like '%A%A%'的那些模糊查询.网上 ...
- python -- 算法
给定四个数字,找出不重复的排列组合可能 # 黑魔法方法,还纳闷 lambda 不能 yield 其实把 [] 改为小括号即是生成器啦 func = lambda num_tuple:((i,j,k,n ...