首页 > 其他分享 >假期下雨在家出不了门,爬下各个国家本地AS和IP地址备用

假期下雨在家出不了门,爬下各个国家本地AS和IP地址备用

时间:2022-10-04 10:12:57浏览次数:50  
标签:24 get url 0.0 self 下雨 dic IP地址 备用

数据源ipip.net,没会员,只能爬网站自己解析了-_-!,防止ip被封,没有启用多线程,后台运行慢慢解析吧

记录下代码

#! /usr/bin/env python
#-*-coding:utf-8-*-
import sys
import bs4
import requests
import json
class HTML_OBJ:
    def __init__(self,country=None):
        self.url='https://whois.ipip.net/'
        self.country = country
        self.As_dic = {}
        self.IPsub_list=[]
        self.headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) '
                        'AppleWebKit/537.36 (KHTML, like Gecko) '
                        'Chrome/83.0.4103.97 Safari/537.36',
        'Accept': 'text/html,application/xhtml+xml,application/xml;'
                    'q=0.9,image/webp,image/apng,*/*;'
                    'q=0.8,application/signed-exchange;v=b3;q=0.9',
        'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
    }
    def get_as(self):
        url = self.url+'countries/'+self.country
        resp = requests.get(url=url,headers=self.headers)
        soup = bs4.BeautifulSoup(resp.text, 'lxml')
        elements = soup.select('a')
        for element in elements:
            span = element.text
            span_des = element.get('title') 
            if span_des:
                self.As_dic.update({span:{'descriptions':span_des}})
        return self.As_dic
    def get_ipsub(self,ASN):
        url = self.url+ASN
        resp = requests.get(url=url,headers=self.headers)
        soup = bs4.BeautifulSoup(resp.text, 'lxml')
        elements = soup.select_one('.table-responsive').select('a')
        for element in elements:
            self.IPsub_list.append(element.text)
        return self.IPsub_list
    def get_json(self):
        write, flush = sys.stdout.write, sys.stdout.flush 
        AS_dic = self.get_as()
        famdic = {}
        th = 100
        for index,a in enumerate(AS_dic):
            self.get_ipsub(a)
            famdic[a]=AS_dic[a]
            famdic[a]['ipsub'] = self.IPsub_list
            self.IPsub_list=[]
            show = '{:.3f}%'.format(index/len(AS_dic))
            write(show)
            flush()
            write('\x08'*len(show))
            filename=self.country+str(th//100)
            if index > th:
                th+=100
                with open('/root/python/crawler/%s.json'%filename,'a+',newline='\n') as e:
                    e.write(json.dumps(famdic,indent=1))
                    famdic={}
        else:
            print('>>>>>>finish')
            with open('/root/python/crawler/%s.json'%(self.country+'last'),'a+',newline='\n') as e:
                e.write(json.dumps(famdic,indent=1))

if __name__ == '__main__':
    HTML_OBJ(country='KR').get_json()

 数据格式

{"AS2500": {
  "descriptions": "AS2500 - WIDE-BB - WIDE Project, JP",
  "ipsub": [
   "133.4.128.0/18",
   "133.144.0.0/24",
   "133.144.0.0/16",
   "163.221.0.0/24",
   "163.221.0.0/16",
   "192.218.228.0/24",
   "202.249.0.0/18",
   "203.178.128.0/17"
  ]
 },
 "AS2501": {
  "descriptions": "AS2501 - UTnet - The University of Tokyo, JP",
  "ipsub": [
   "130.69.0.0/24",
   "130.69.0.0/16",
   "133.11.0.0/24",
   "133.11.0.0/16",
   "157.82.0.0/24",
   "157.82.0.0/16",
   "157.82.112.0/21",
   "192.51.208.0/20"
  ]
 },
 "AS2504": {
  "descriptions": "AS2504 - NCA5 - Kyoto University, JP",
  "ipsub": [
   "130.54.0.0/24",
   "130.54.0.0/16",
   "133.3.0.0/24",
   "133.3.0.0/16",
   "192.50.8.0/23",
   "192.50.24.0/23"
  ]
 },
... }

 

标签:24,get,url,0.0,self,下雨,dic,IP地址,备用
From: https://www.cnblogs.com/darkchen/p/16753301.html

相关文章

  • 【Azure Developer】使用Python代码获取VM的IP地址 (Public IP + Private IP)
    记录使用以下的代码获取AzureVM中的IP地址"""Createandmanagevirtualmachines.Thisscriptexpectsthatthefollowingenvironmentvarsareset:AZURE_TENANT_ID:......
  • 【Azure Developer】使用Python代码获取VM的IP地址 (Public IP + Private IP)
     记录使用以下的代码获取AzureVM中的IP地址"""Createandmanagevirtualmachines.Thisscriptexpectsthatthefollowingenvironmentvarsareset:AZURE_......
  • 网络编程-IP地址的分类
    网络编程-IP地址的分类网络中有多台计算机,它们必须通过某种标识来区分每一台机器,这个用于区分的标识这就是IP地址;IP地址由4个数字组成,形如“192.168.1.1”。(其实是4个字......
  • Linux设置固定IP地址
    以Centos7为例终端运行ifconfig查看网卡配置信息如果无法找到该命令需要安装net-toolsyuminstallnet-tools如下图使用的网卡为eth0cd/etc/sysconfig/networ......
  • 【Linux】【虚拟机】 IP地址的动态与静态设置
    目录配置文件的修改配置文件的修改vim/etc/sysconfig/network-scripts/ifcfg-ens33IP配置方式(不指定:none,静态:static,动态:dhcp)如果想将动态地址改为静态地址,将dhcp改......
  • C#编写的一个简单的IP地址配置切换器
    首先看程序界面,如下图所示的样子功能很简单,就是可以保存几个自定义IP地址配置以及切换。写这个主要是为了母亲用的,母亲在医院上班。医院的网分为内网和外网,内网是必须要......
  • 客户端通过gethostbyname获取服务端IP地址
    #include<stdio.h>#include<stdlib.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<errno.h>#include<string.h>#include......
  • 利用curl命令查看Mac和Linux的ip地址
    curl是http命令行工具。它支持文件的上传和下载。curl命令可以拉取一个网页,语法也很简单:1curlhttp://www.linux.com然后会返回:1<html>2<head><title>301Moved......
  • 删除远程桌面链接下拉框ip地址
    一、介绍如下图,远程桌面连接会将我们以前连接过的主机IP地址都记录在这个下拉框里,为了某些原因我们可能需要删除这些记录!【请先阅读“三、备注”后操作】二、操作步骤......
  • django 前后端交互-ip地址
    1、前端统一配置后端地址  2、前端启动带IP  3、后端启动带IP和端口pythonmanage.pyrunserver100.110.34.202:8000同时,修改如下配置 ......