HiveNetCore.utils.net_tool module¶
网络处理相关工具
- class HiveNetCore.utils.net_tool.NetTool[源代码]¶
基类:
object网络处理相关工具
提供网络处理相关的函数, 包括字节转换处理等
- static bytes_to_int(bytes_value, byte_order='big', signed=True)[源代码]¶
将字节数组转换为整型数字, 与int_to_bytes配套使用
- 参数
bytes_value (bytes) – 要转换的字节数组
byte_order (string) –
default=”big”, 字节顺序, 值为’big’或者’little’:
big - 表示最有意义的字节放在字节数组的开头
little - 表示最有意义的字节放在字节数组的结尾
sys.byteorder - 保存了主机系统的字节序, 可以使用这个属性获取本机顺序
signed (bool) – default=True, 确定是否使用补码来表示整数, 如果值为False, 并且是负数, 则产生OverflowError
- 返回
转换后的整数
- 返回类型
int
- 引发
OverflowError – 无符号位时传入负数抛出该异常
- static download_http_file(url: str, filename=None, path='', is_resume=False, headers={}, connect_timeout=None, params={}, proxies={}, verify=True, cookies={}, block_size=1024, retry=0, show_rate=False)[源代码]¶
下载文件
- 参数
url (str) – 要下载的文件url
filename (str) – default=None, 保存的文件名, 如果传None代表使用url的文件名
path (str) – default=’’, 要保存的文件路径
is_resume (bool) – default=False, 是否使用续传功能, 如果不使用则统一用wget下载
headers (dict) – default={}, 要带上的http协议头
connect_timeout (float) – default=None, 连接超时时间, 单位为秒
params (dict) – default={}, 请求url的参数, 拼接到url中, 例如”https://www.baidu.com/s?wd=Python”
proxies (dict) –
default={}, 代理服务器, 例如:
proxies={
“http”:”http://1.192.242.107:9999”
# “https”:”https://192.168.0.1:80”
}
verify (bool) – default=True, ssl证书验证是否跳过, 可设置为False跳过
cookies (dict) – default={}, cookies参数
block_size (int) – default=1024, 每次下载块大小, 单位为byte
retry (int) – default=0, 自动重试次数
show_rate (bool) – default=False, 显示下载进度(仅wget模式支持)
- classmethod get_file_md5(file, buffer_size: int = 4096)[源代码]¶
获取文件md5值
- 参数
file (str|FileIO|bytes]) – 文件路径, 或已打开的文件对象, 或文件字节数组
- classmethod get_full_url(url: str, ref_url: str) str[源代码]¶
获取完整的url地址
- 参数
url (str) – 要处理的url地址
ref_url (str) – 引用的url地址( 页面url)
- 返回
完整url地址
- 返回类型
str
- static get_http_fileinfo(url: str, headers={}, connect_timeout=None, params={}, proxies={}, verify=True, cookies={})[源代码]¶
获取网络文件基本信息
- 参数
url (str) – 下载文件的url
headers (dict) – default={}, 下载请求要自定义的http头
connect_timeout (float) – default=None, 连接服务器的超时时间, 单位为秒
params (dict) – default={}, 请求url的参数, 拼接到url中, 例如”https://www.baidu.com/s?wd=Python”
proxies (dict) –
default={}, 代理服务器, 例如:
proxies={
“http”:”http://1.192.242.107:9999”
# “https”:”https://192.168.0.1:80”
}
verify (bool) – default=True, ssl证书验证是否跳过, 可设置为False跳过
cookies (dict) – default={}, cookies参数
- classmethod get_net_interface_info_alias(nic_name: str) dict[源代码]¶
获取网卡信息(按容易理解的别名解析)
- 参数
nic_name (str) – 网卡名
- 返回
网卡信息
{
‘nic_name’: ‘网卡名’,
’mac’ : ‘MAC地址’,
’ipv4’ : { # ipv4信息
{‘addr’: ‘IP地址’, ‘netmask’: ‘网络掩码’, ‘broadcast’: ‘广播地址’}
},
’ipv6’: { # ipv6信息
{‘addr’: ‘ipv6地址’, ‘netmask’: ‘网络掩码’, ‘flags’: 1024}
}
}
- 返回类型
dict
- static get_web_page_code(url: str, data=None, timeout=<object object>, encoding='utf-8', retry=0, proxy: dict = None, cafile=None, capath=None, cadefault=False, context=None, real_url=[''])[源代码]¶
获取网页代码(静态代码)
- 参数
url (str|urllib.request.Request) – 要获取的网页的url, 可用是一个字符串地址或者Request对象
data (bytes) –
default=None, Post提交的数据, 正常以GET参数获取, data传值后将以POST参数获取
示例(将data转换为字节, urlencode可用支持数组或列表的对象):
data = urllib.parse.urlencode(data).encode(‘utf-8’)
timeout (float) –
default=socket._GLOBAL_DEFAULT_TIMEOUT, 超时时间, 单位为秒
默认使用socket的默认超时时间, 如果没有使用socket.setdefaulttimeout设置, 则是不超时
encoding (str) – default=’utf-8’, 解析返回页面内容的编码
retry (int) – default=0, 超时重试次数
proxy (dict) –
default=None, 设置访问代理, 例如{‘http’: ‘http://61.135.217.7:80’}, 或 {‘https’: ‘https://61.135.217.7:443’}
注: 指定代理模式不支持cafile、capath、cadefault、context等参数
cafile (str) – default=None, 本地CA证书文件
capath (str) – default=None, 本地CA证书所在路径
cadefault (bool) – default=False, ?
context (ssl.SSLContext) – default=None, SSL证书验证上下文
real_url (list) – default=[‘’], 通过该入参返回真实的url地址(数组第0个)
示例
url使用的Request对象的生成示例:
# 访问地址
url = ‘xxx’
# 报文头信息
headers ={
“User-Agent”: “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36”,
}
# 生成Request对象
urllib.request.Request(url, headers=headers) 忽略网站的未经核实的证书认证错误
# 将以下生成的context对象传入执行参数
import ssl
context = ssl._create_unverified_context()
- static int_to_bytes(int_value, fix_len=4, byte_order='big', signed=True)[源代码]¶
将整型数据转换为字节数组,与bytes_to_int配套使用
- 参数
int_value (int) – 要转换的数字
fix_len (int) – default=4, 返回数组的长度, 如果整数转换出的字节数组长度超过了该长度, 则产生OverflowError
byte_order (string) –
default=”big”, 字节顺序, 值为’big’或者’little’:
big - 表示最有意义的字节放在字节数组的开头
little - 表示最有意义的字节放在字节数组的结尾
sys.byteorder - 保存了主机系统的字节序, 可以使用这个属性获取本机顺序
signed (bool) – default=True, 确定是否使用补码来表示整数, 如果值为False, 并且是负数, 则产生OverflowError
- 返回
转换后的字节数组
- 返回类型
bytes
- 引发
OverflowError – 如果整数转换出的字节数组长度超过长度或无符号位时传入负数
- static restful_api_call(url: str, method: str = 'get', back_type: str = 'json', encoding: str = None, block_size: int = 1024, save_file: str = None, raise_exception: bool = False, success_code: list = [200], logger=None, log_level: int = 10, **kwargs)[源代码]¶
调用Restful Api
- 参数
url (str) – 要调用的url地址
method (str) – default=’get’, Http方法
back_type (str) –
default=’json’, 返回信息的类型
json - json对象(字典或列表)
text - 文本
file - 存入指定文件
bytes - 字节数组
encoding (str) – default=None, 编码, 如果不传则使用返回http头的字符集
block_size (int) – default=1024, 如果指定stream时, 每次获取的数据块大小
save_file (str) – default=None, back_type为file时指定要存储的文件
raise_exception (bool) – default=False, 当出现异常时是否抛出异常
success_code (list) – default=[200], 识别返回的status_code为成功的清单
logger (Logger) – default=None, 日志对象
log_level (int) – default=logging.DEBUG, 日志级别
扩展参数 (-) –
参考requests.request的参数 (: kwargs) –
主要参数如下 –
- 返回
返回请求结果字典
{
‘is_success’: bool_是否成功,
’status_code’: int_响应状态码,
’headers’: dict_响应http头,
’back_object’: object_返回对象, 对应调用参数可以为dict、str、bytes、文件名,
’exception’: 如果出现异常, 异常对象,
’encoding’: 字符集
}
- 返回类型
dict