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的更多相关文章

  1. 【Python】批量查询-提取站长之家IP批量查询的结果v1.0

    0 前言 写报告的时候为了细致性,要把IP地址对应的地区给整理出来.500多条IP地址找出对应地区复制粘贴到报告里整了一个上午. 为了下次更好的完成这项重复性很高的工作,所以写了这个小的脚本. 1 使 ...

  2. 提取站长之家IP批量查询

    1.工具说明 写报告的时候为了细致性,要把IP地址对应的地区给整理出来.500多条IP地址找出对应地区复制粘贴到报告里整了一个上午. 为了下次更好的完成这项重复性很高的工作,所以写了这个小的脚本. 使 ...

  3. 【python数据挖掘】批量爬取站长之家的图片

    概述: 站长之家的图片爬取 使用BeautifulSoup解析html 通过浏览器的形式来爬取,爬取成功后以二进制保存,保存的时候根据每一页按页存放每一页的图片 第一页:http://sc.china ...

  4. Python 超简单 提取音乐高潮(附批量提取)

    很多时候我们想提取某首歌的副歌部分(俗称 高潮部分),只能手动直接卡点剪切,但是对于大批量的获取就很头疼,如何解决? 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后 ...

  5. python requests库爬取网页小实例:ip地址查询

    ip地址查询的全代码: 智力使用ip183网站进行ip地址归属地的查询,我们在查询的过程是通过构造url进行查询的,将要查询的ip地址以参数的形式添加在ip183url后面即可. #ip地址查询的全代 ...

  6. [1]IP地址查询

    今天起开始玩百度APIStore里面的免费API.以前用过的有12306的:数据.接口,有时间整理出来,12306的有点乱就是了.还有扇贝以及有道的API,之前用在留言板里自动翻译,公司用过百度地图以 ...

  7. 利用Python制作简单的小程序:IP查看器

    前言 说实话,查看电脑的IP,也挺无聊的,但是够简单,所以就从这里开始吧.IP地址在操作系统里就可以直接查看.但是除了IP地址,我们也想通过IP获取地理地址和网络运营商情况.IP地址和地理地址并没有固 ...

  8. python扫描proxy并获取可用代理ip列表

    mac或linux下可以work的代码如下: # coding=utf-8 import requests import re from bs4 import BeautifulSoup as bs ...

  9. 【学习】Python进行数据提取的方法总结【转载】

    链接:http://www.jb51.net/article/90946.htm 数据提取是分析师日常工作中经常遇到的需求.如某个用户的贷款金额,某个月或季度的利息总收入,某个特定时间段的贷款金额和笔 ...

随机推荐

  1. 19 Zabbix web监控实例

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 9 Zabbix web监控实例 通过前面的介绍你已经了解Web scenario的配置,下面我们 ...

  2. 配置远程jupyter notebook

    在远程服务器上启动jupyter notebook,然后在本地进行访问.本文使用最简单的一种方法,无需设置密码,所以这种方法也是最不安全的方法,慎用. 1. 在远程服务器上生成jupyter note ...

  3. SDL源码阅读笔记(2) video dirver的初始化及选择

    write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie 前一篇文章 讲了SDL的除video以外的大部分模块.本文主要关注SDL的video模块部分. SD ...

  4. A1016. Phone Bills

    A long-distance telephone company charges its customers by the following rules: Making a long-distan ...

  5. javascript面向对象精要第四章构造函数和原型对象整理精要

  6. 二分图判定 POJ-2492

    这是由AC代码改的模板,不能直接交啊 #include<iostream> #include<vector> #include<cstring> using nam ...

  7. LVS+Keepalived实现MySQL从库读操作负载均衡配置

    转载于osyunwei 说明: 操作系统:CentOS 5.X 64位 MySQL主服务器:192.168.21.126 MySQL从服务器:192.168.21.127,192.168.21.128 ...

  8. LoadRunner进行参数化的九种方式取值和连接数据库取值

    一.连接mysql数据库取值 1.首先安装odbc驱动 链接: https://pan.baidu.com/s/1WAYd4ygQqIrbB08S01hSkg 提取码: gdfs 2.操作步骤如下图: ...

  9. eclipse中编辑properties文件无法看到中文

    如果在eclipse中编辑properties文件无法看到中文则参考“Eclipse开发环境配置-indigo.docx”添加propedit插件.

  10. SQL Server 日期和时间类型

    在Microsoft SQL Server的类型系统中,使用 date 表示日期类型,使用time表示时间类型,使用DateTime和DateTime2表示日期和时间的组合,DateTime2是Dat ...