1. 首先从纯真ip下载最新ip数据,地址:http://www.cz88.net/,数据格式是这样的

0.0.0.0 0.255.255.255 IANA保留地址 CZ88.NET
1.0.0.0 1.0.0.255 澳大利亚 CZ88.NET
1.0.1.0 1.0.3.255 福建省 电信
1.0.4.0 1.0.7.255 澳大利亚 CZ88.NET

2. 根据ip爬取该ip所处地点

import urllib.parse
import urllib.request
from html.parser import HTMLParser
import time''' global constants
'''
START = ''
END = ''
LOCATION = ''
NET = ''class MyHTMLParser(HTMLParser):def __init__(self):HTMLParser.__init__(self)self.region = ''def handle_data(self, data):if data[0:5] == '本站主数据':#print(data[6:])self.region = data[6:]''' remove the invalid space
'''
def remove_invalid_space(line):return line.split()''' format one line
'''
def format_one_line(line):if len(line) == 6:net = line[-3] + line[-2] + line[-1]elif len(line) == 5:net = line[-2] + line[-1]else:net = line[-1]line_format = [line[0], line[1] , line[2], net]return line_format''' get location from ip
'''
def get_location_from_ip(line):url = 'http://www.ip138.com/ips1388.asp'data = {'ip': line[0],'action': '2'}params = urllib.parse.urlencode(data)full_url = url + '?' + paramsresponse = urllib.request.urlopen(full_url)html = response.read().decode('GBK')parser = MyHTMLParser()parser.feed(html)parser.close()region = remove_invalid_space(parser.region)if len(region) == 1:location = region[0]net = ''else:location = region[0]net = region[-1]line_format = [line[0], line[1], location, net]global LOCATIONglobal NETglobal STARTglobal ENDif LOCATION == location and NET == net:line_format_over_write = START + ' ' + str(line_format[1]) + ' ' + location + ' ' + netover_write_tmp_file(line_format_over_write)else:write_to_tmp_file(str(line_format[0]) + ' ' + str(line_format[1]) + ' ' + str(line_format[2]) + ' ' + str(line_format[3]))START = line[0]END = line[1]LOCATION = locationNET = net''' write to tmp file
'''
def write_to_tmp_file(line):try:file = open('ip_tmp.txt', 'a')file.write(line + '\n')except FileNotFoundError:print('file not found')finally:if 'file' in locals():file.close()''' over write tmp file
'''
def over_write_tmp_file(line):try:file = open('ip_tmp.txt')lines = file.readlines()curr = lines[:-1]except FileNotFoundError:print('file not found')finally:if 'file' in locals():file.close()try:file = open('ip_tmp.txt', 'w')curr.append(line + '\n')file.writelines(curr)except FileNotFoundError:print('file not found')finally:if 'file' in locals():file.close()def format_ip_file(path):try:file = open(path)for line in file:# main logic of get location from ipget_location_from_ip(format_one_line(remove_invalid_space(line)))time.sleep(0.1)except FileNotFoundError:print('file not found')finally:if 'file' in locals():file.close()print('start')
format_ip_file('D:\workspace\Python\ip\ip.txt')
print('end', end = '')

3. 最好设置延时,要不然搞崩溃ip138

[Python] 从ip138网站爬取ip所处地点相关推荐

  1. python自动登录网站爬取数据_Python爬虫实战:自动化登录网站,爬取商品数据

    前言 随着互联网时代的到来,人们更加倾向于互联网购物.某东又是电商行业的巨头,在某东平台中有很多商家数据.今天带大家使用python+selenium工具获取这些公开的商家数据 适合阅读人群:sele ...

  2. python爬虫实例之爬取智联招聘数据

    这是作者的处女作,轻点喷.... 实习在公司时领导要求学习python,python的爬虫作为入门来说是十分友好的,话不多说,开始进入正题. 主要是爬去智联的岗位信息进行对比分析出java和pytho ...

  3. Python爬虫之利用xpath爬取ip代理网站的代理ip

    爬虫工具 python3 pycharm edge/chrome requests库的用法 requests库是python中简单易用的HTTP库 用命令行安装第三方库 pip install req ...

  4. python爬虫实战:爬取西刺代理网站,获取免费的代理IP

    爬取的网站链接:西刺网站 import requests import chardet import random import time from bs4 import BeautifulSoup ...

  5. [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(四) —— 应对反爬技术(选取 User-Agent、添加 IP代理池以及Cookies池 )

    上一篇:[Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(三) -- 数据的持久化--使用MongoDB存储爬取的数据 最近项目有些忙,很多需求紧急上线,所以一直没能完善< 使用 ...

  6. Python之 - 使用Scrapy建立一个网站抓取器,网站爬取Scrapy爬虫教程

    Scrapy是一个用于爬行网站以及在数据挖掘.信息处理和历史档案等大量应用范围内抽取结构化数据的应用程序框架,广泛用于工业. 在本文中我们将建立一个从Hacker News爬取数据的爬虫,并将数据按我 ...

  7. python——图片爬虫:爬取爱女神网站(www.znzhi.net)上的妹子图 进阶篇

    在上一篇博客中:python--图片爬虫:爬取爱女神网站(www.znzhi.net)上的妹子图 基础篇 我讲解了图片爬虫的基本步骤,并实现了爬虫代码 在本篇中,我将带领大家对基础篇中的代码进行改善, ...

  8. python多线程爬取多个网址_【Python爬虫】多线程爬取斗图网站(皮皮虾,我们上车)...

    原标题:[Python爬虫]多线程爬取斗图网站(皮皮虾,我们上车) 斗图我不怕 没有斗图库的程序猿是无助,每次在群里斗图都以惨败而告终,为了能让自己在斗图界立于不败之地,特意去网上爬取了斗图包.在这里 ...

  9. Python的Scrapy框架爬取诗词网站爱情诗送给女友

    文章目录 前言 效果展示: 一.安装scrapy库 二.创建scrapy项目 三.新建爬虫文件scmg_spider.py 四.配置settings.py文件 五.定义数据容器,修改item.py文件 ...

  10. Python 爬虫复习之爬取笔趣阁小说网站(不用正则)

    前言 小说网站-笔趣阁:URL:https://www.qu.la/ 笔趣阁是一个盗版小说网站,这里有很多起点中文网的小说,该网站小说的更新速度稍滞后于起点中文网正版小说的更新速度.并且该网站只支持在 ...

最新文章

  1. Ubuntu使用tzselect修改时区
  2. DBgrid 第一列加入CheckBox,点击列头 全选/全消
  3. DDD“上吊绳驱动开发”,开发要想不被“吊死”,该如何自救?
  4. 架构设计 | 分布式业务系统中,全局ID生成策略
  5. Android Navigation 组件(基础篇)
  6. python中isort的使用
  7. git21天打卡-day8 本地分支push到远程服务器
  8. 转:Linux 僵尸进程详解
  9. Java中sleep,wait的区别
  10. android版git中国只有,GitHub - ynztlxdeai/android-app: 本项目已经迁移到 git.oschina.net ,此处不再更新!...
  11. chrome扩展程序_如何在20分钟内创建和发布Chrome扩展程序
  12. 激光SLAM框架总结
  13. 计算机科技论文写作题目,科技论文写作应注意的几个问题 | 科研动力
  14. php echo字符串连接符逗号,和句号.的区别,使用实例
  15. Google工具栏(转)
  16. 仿美团下拉菜单 html,React Native仿美团下拉菜单的实例代码
  17. linux查询awk命令用法
  18. 什么是checkpoint (转)
  19. Java获取当前时间前24小时时间
  20. 小程序设计规范及经验分享

热门文章

  1. iview中的Select选择器
  2. SpringBoot 启动报错 No property found for type !
  3. linux 搭建论坛(虚拟机)
  4. AddressBook获取通讯录
  5. LOI2504 [HAOI2006]聪明的猴子
  6. Android进程间通信系列-----------进程间的数据传递载体Parcel
  7. 平淡人生(一)- 360发展历程及人物杂记
  8. 重庆财经职业学院计算机一级考试题,2021年重庆财经职业学院单招语文考试模拟试题库...
  9. cisco ASA 防火墙安全算法原理和基本配置(转自http://xiaoxiao1001.blog.51cto.com/7640562/1300161)
  10. 解决:java.lang.UnsupportedClassVersionError