re-common 10.0.39__py3-none-any.whl → 10.0.41__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- re_common/baselibrary/__init__.py +4 -4
- re_common/baselibrary/baseabs/__init__.py +6 -6
- re_common/baselibrary/baseabs/baseabs.py +26 -26
- re_common/baselibrary/database/mbuilder.py +132 -132
- re_common/baselibrary/database/moudle.py +93 -93
- re_common/baselibrary/database/msqlite3.py +194 -194
- re_common/baselibrary/database/mysql.py +169 -169
- re_common/baselibrary/database/sql_factory.py +26 -26
- re_common/baselibrary/mthread/MThreadingRun.py +486 -486
- re_common/baselibrary/mthread/MThreadingRunEvent.py +349 -349
- re_common/baselibrary/mthread/__init__.py +2 -2
- re_common/baselibrary/mthread/mythreading.py +695 -695
- re_common/baselibrary/pakge_other/socks.py +404 -404
- re_common/baselibrary/readconfig/config_factory.py +18 -18
- re_common/baselibrary/readconfig/ini_config.py +317 -317
- re_common/baselibrary/readconfig/toml_config.py +49 -49
- re_common/baselibrary/temporary/envdata.py +36 -36
- re_common/baselibrary/tools/all_requests/aiohttp_request.py +118 -118
- re_common/baselibrary/tools/all_requests/httpx_requet.py +102 -102
- re_common/baselibrary/tools/all_requests/mrequest.py +412 -412
- re_common/baselibrary/tools/all_requests/requests_request.py +81 -81
- re_common/baselibrary/tools/batch_compre/bijiao_batch.py +31 -31
- re_common/baselibrary/tools/contrast_db3.py +123 -123
- re_common/baselibrary/tools/copy_file.py +39 -39
- re_common/baselibrary/tools/db3_2_sizedb3.py +102 -102
- re_common/baselibrary/tools/foreachgz.py +39 -39
- re_common/baselibrary/tools/get_attr.py +10 -10
- re_common/baselibrary/tools/image_to_pdf.py +61 -61
- re_common/baselibrary/tools/java_code_deal.py +139 -139
- re_common/baselibrary/tools/javacode.py +79 -79
- re_common/baselibrary/tools/mdb_db3.py +48 -48
- re_common/baselibrary/tools/merge_file.py +171 -171
- re_common/baselibrary/tools/merge_gz_file.py +165 -165
- re_common/baselibrary/tools/mhdfstools/down_hdfs_files.py +42 -42
- re_common/baselibrary/tools/mhdfstools/hdfst.py +42 -42
- re_common/baselibrary/tools/mhdfstools/up_hdfs_files.py +38 -38
- re_common/baselibrary/tools/mongo_tools.py +50 -50
- re_common/baselibrary/tools/move_file.py +170 -170
- re_common/baselibrary/tools/move_mongo/mongo_table_to_file.py +63 -63
- re_common/baselibrary/tools/move_mongo/move_mongo_table.py +354 -354
- re_common/baselibrary/tools/move_mongo/use_mttf.py +18 -18
- re_common/baselibrary/tools/move_mongo/use_mv.py +93 -93
- re_common/baselibrary/tools/mpandas/mpandasreadexcel.py +125 -125
- re_common/baselibrary/tools/mpandas/pandas_visualization.py +7 -7
- re_common/baselibrary/tools/myparsel.py +104 -104
- re_common/baselibrary/tools/rename_dir_file.py +37 -37
- re_common/baselibrary/tools/sequoiadb_utils.py +398 -398
- re_common/baselibrary/tools/split_line_to_many.py +25 -25
- re_common/baselibrary/tools/stringtodicts.py +33 -33
- re_common/baselibrary/tools/workwechant_bot.py +84 -84
- re_common/baselibrary/utils/baseaiohttp.py +296 -296
- re_common/baselibrary/utils/baseaiomysql.py +87 -87
- re_common/baselibrary/utils/baseallstep.py +191 -191
- re_common/baselibrary/utils/baseavro.py +19 -19
- re_common/baselibrary/utils/baseboto3.py +291 -291
- re_common/baselibrary/utils/basecsv.py +32 -32
- re_common/baselibrary/utils/basedict.py +133 -133
- re_common/baselibrary/utils/basedir.py +241 -241
- re_common/baselibrary/utils/baseencode.py +351 -351
- re_common/baselibrary/utils/baseencoding.py +28 -28
- re_common/baselibrary/utils/baseesdsl.py +86 -86
- re_common/baselibrary/utils/baseexcel.py +264 -264
- re_common/baselibrary/utils/baseexcept.py +109 -109
- re_common/baselibrary/utils/basefile.py +654 -654
- re_common/baselibrary/utils/baseftp.py +214 -214
- re_common/baselibrary/utils/basegzip.py +60 -60
- re_common/baselibrary/utils/basehdfs.py +135 -135
- re_common/baselibrary/utils/basehttpx.py +268 -268
- re_common/baselibrary/utils/baseip.py +87 -87
- re_common/baselibrary/utils/basejson.py +2 -2
- re_common/baselibrary/utils/baselist.py +32 -32
- re_common/baselibrary/utils/basemotor.py +190 -190
- re_common/baselibrary/utils/basemssql.py +98 -98
- re_common/baselibrary/utils/baseodbc.py +113 -113
- re_common/baselibrary/utils/basepandas.py +302 -302
- re_common/baselibrary/utils/basepeewee.py +11 -11
- re_common/baselibrary/utils/basepika.py +180 -180
- re_common/baselibrary/utils/basepydash.py +143 -143
- re_common/baselibrary/utils/basepymongo.py +230 -230
- re_common/baselibrary/utils/basequeue.py +22 -22
- re_common/baselibrary/utils/baserar.py +57 -57
- re_common/baselibrary/utils/baserequest.py +279 -279
- re_common/baselibrary/utils/baseset.py +8 -8
- re_common/baselibrary/utils/basesmb.py +403 -403
- re_common/baselibrary/utils/basestring.py +382 -382
- re_common/baselibrary/utils/basetime.py +320 -320
- re_common/baselibrary/utils/baseurl.py +121 -121
- re_common/baselibrary/utils/basezip.py +57 -57
- re_common/baselibrary/utils/core/__init__.py +7 -7
- re_common/baselibrary/utils/core/bottomutils.py +18 -18
- re_common/baselibrary/utils/core/mdeprecated.py +327 -327
- re_common/baselibrary/utils/core/mlamada.py +16 -16
- re_common/baselibrary/utils/core/msginfo.py +25 -25
- re_common/baselibrary/utils/core/requests_core.py +103 -103
- re_common/baselibrary/utils/fateadm.py +429 -429
- re_common/baselibrary/utils/importfun.py +123 -123
- re_common/baselibrary/utils/mfaker.py +57 -57
- re_common/baselibrary/utils/my_abc/__init__.py +3 -3
- re_common/baselibrary/utils/my_abc/better_abc.py +32 -32
- re_common/baselibrary/utils/mylogger.py +414 -414
- re_common/baselibrary/utils/myredisclient.py +861 -861
- re_common/baselibrary/utils/pipupgrade.py +21 -21
- re_common/baselibrary/utils/ringlist.py +85 -85
- re_common/baselibrary/utils/version_compare.py +36 -36
- re_common/baselibrary/utils/ydmhttp.py +126 -126
- re_common/facade/lazy_import.py +11 -11
- re_common/facade/loggerfacade.py +25 -25
- re_common/facade/mysqlfacade.py +467 -467
- re_common/facade/now.py +31 -31
- re_common/facade/sqlite3facade.py +257 -257
- re_common/facade/use/mq_use_facade.py +83 -83
- re_common/facade/use/proxy_use_facade.py +19 -19
- re_common/libtest/base_dict_test.py +19 -19
- re_common/libtest/baseavro_test.py +13 -13
- re_common/libtest/basefile_test.py +14 -14
- re_common/libtest/basemssql_test.py +77 -77
- re_common/libtest/baseodbc_test.py +7 -7
- re_common/libtest/basepandas_test.py +38 -38
- re_common/libtest/get_attr_test/get_attr_test_settings.py +14 -14
- re_common/libtest/get_attr_test/settings.py +54 -54
- re_common/libtest/idencode_test.py +53 -53
- re_common/libtest/iniconfig_test.py +35 -35
- re_common/libtest/ip_test.py +34 -34
- re_common/libtest/merge_file_test.py +20 -20
- re_common/libtest/mfaker_test.py +8 -8
- re_common/libtest/mm3_test.py +31 -31
- re_common/libtest/mylogger_test.py +88 -88
- re_common/libtest/myparsel_test.py +27 -27
- re_common/libtest/mysql_test.py +151 -151
- re_common/libtest/pymongo_test.py +21 -21
- re_common/libtest/split_test.py +11 -11
- re_common/libtest/sqlite3_merge_test.py +5 -5
- re_common/libtest/sqlite3_test.py +34 -34
- re_common/libtest/tomlconfig_test.py +30 -30
- re_common/libtest/use_tools_test/__init__.py +2 -2
- re_common/libtest/user/__init__.py +4 -4
- re_common/studio/__init__.py +4 -4
- re_common/studio/assignment_expressions.py +36 -36
- re_common/studio/mydash/test1.py +18 -18
- re_common/studio/pydashstudio/first.py +9 -9
- re_common/studio/streamlitstudio/first_app.py +65 -65
- re_common/studio/streamlitstudio/uber_pickups.py +23 -23
- re_common/studio/test.py +18 -18
- re_common/v2/baselibrary/business_utils/BusinessStringUtil.py +235 -220
- re_common/v2/baselibrary/business_utils/baseencodeid.py +100 -100
- re_common/v2/baselibrary/business_utils/full_doi_path.py +116 -116
- re_common/v2/baselibrary/business_utils/rel_tools.py +6 -6
- re_common/v2/baselibrary/decorators/utils.py +59 -59
- re_common/v2/baselibrary/helpers/search_packge/NearestNeighbors_test.py +105 -105
- re_common/v2/baselibrary/helpers/search_packge/fit_text_match.py +253 -253
- re_common/v2/baselibrary/helpers/search_packge/scikit_learn_text_matcher.py +260 -260
- re_common/v2/baselibrary/helpers/search_packge/test.py +1 -1
- re_common/v2/baselibrary/s3object/baseboto3.py +230 -230
- re_common/v2/baselibrary/tools/WeChatRobot.py +95 -95
- re_common/v2/baselibrary/tools/ac_ahocorasick.py +75 -75
- re_common/v2/baselibrary/tools/concurrency.py +35 -35
- re_common/v2/baselibrary/tools/data_processer/base.py +53 -53
- re_common/v2/baselibrary/tools/data_processer/data_processer.py +497 -508
- re_common/v2/baselibrary/tools/data_processer/data_reader.py +187 -187
- re_common/v2/baselibrary/tools/data_processer/data_writer.py +38 -38
- re_common/v2/baselibrary/tools/dict_tools.py +44 -44
- re_common/v2/baselibrary/tools/dolphinscheduler.py +187 -187
- re_common/v2/baselibrary/tools/hdfs_base_processor.py +204 -204
- re_common/v2/baselibrary/tools/hdfs_bulk_processor.py +67 -67
- re_common/v2/baselibrary/tools/hdfs_data_processer.py +338 -338
- re_common/v2/baselibrary/tools/hdfs_line_processor.py +74 -74
- re_common/v2/baselibrary/tools/list_tools.py +69 -69
- re_common/v2/baselibrary/tools/resume_tracker.py +94 -94
- re_common/v2/baselibrary/tools/search_hash_tools.py +54 -54
- re_common/v2/baselibrary/tools/text_matcher.py +326 -326
- re_common/v2/baselibrary/tools/tree_processor/__init__.py +0 -0
- re_common/v2/baselibrary/tools/tree_processor/builder.py +25 -0
- re_common/v2/baselibrary/tools/tree_processor/node.py +13 -0
- re_common/v2/baselibrary/tools/unionfind_tools.py +60 -60
- re_common/v2/baselibrary/utils/BusinessStringUtil.py +196 -196
- re_common/v2/baselibrary/utils/api_net_utils.py +270 -270
- re_common/v2/baselibrary/utils/author_smi.py +361 -361
- re_common/v2/baselibrary/utils/base_string_similarity.py +158 -158
- re_common/v2/baselibrary/utils/basedict.py +37 -37
- re_common/v2/baselibrary/utils/basehdfs.py +163 -163
- re_common/v2/baselibrary/utils/basepika.py +180 -180
- re_common/v2/baselibrary/utils/basetime.py +94 -77
- re_common/v2/baselibrary/utils/db.py +174 -156
- re_common/v2/baselibrary/utils/elasticsearch.py +46 -0
- re_common/v2/baselibrary/utils/json_cls.py +16 -16
- re_common/v2/baselibrary/utils/mq.py +83 -83
- re_common/v2/baselibrary/utils/n_ary_expression_tree.py +243 -243
- re_common/v2/baselibrary/utils/string_bool.py +187 -186
- re_common/v2/baselibrary/utils/string_clear.py +246 -246
- re_common/v2/baselibrary/utils/string_smi.py +18 -18
- re_common/v2/baselibrary/utils/stringutils.py +312 -271
- re_common/vip/base_step_process.py +11 -11
- re_common/vip/baseencodeid.py +90 -90
- re_common/vip/changetaskname.py +28 -28
- re_common/vip/core_var.py +24 -24
- re_common/vip/mmh3Hash.py +89 -89
- re_common/vip/proxy/allproxys.py +127 -127
- re_common/vip/proxy/allproxys_thread.py +159 -159
- re_common/vip/proxy/cnki_proxy.py +153 -153
- re_common/vip/proxy/kuaidaili.py +87 -87
- re_common/vip/proxy/proxy_all.py +113 -113
- re_common/vip/proxy/update_kuaidaili_0.py +42 -42
- re_common/vip/proxy/wanfang_proxy.py +152 -152
- re_common/vip/proxy/wp_proxy_all.py +181 -181
- re_common/vip/read_rawid_to_txt.py +91 -91
- re_common/vip/title/__init__.py +5 -5
- re_common/vip/title/transform/TransformBookTitleToZt.py +125 -125
- re_common/vip/title/transform/TransformConferenceTitleToZt.py +139 -139
- re_common/vip/title/transform/TransformCstadTitleToZt.py +195 -195
- re_common/vip/title/transform/TransformJournalTitleToZt.py +203 -203
- re_common/vip/title/transform/TransformPatentTitleToZt.py +132 -132
- re_common/vip/title/transform/TransformRegulationTitleToZt.py +114 -114
- re_common/vip/title/transform/TransformStandardTitleToZt.py +135 -135
- re_common/vip/title/transform/TransformThesisTitleToZt.py +135 -135
- re_common/vip/title/transform/__init__.py +10 -10
- {re_common-10.0.39.dist-info → re_common-10.0.41.dist-info}/LICENSE +201 -201
- {re_common-10.0.39.dist-info → re_common-10.0.41.dist-info}/METADATA +16 -16
- re_common-10.0.41.dist-info/RECORD +252 -0
- {re_common-10.0.39.dist-info → re_common-10.0.41.dist-info}/WHEEL +1 -1
- re_common-10.0.39.dist-info/RECORD +0 -248
- {re_common-10.0.39.dist-info → re_common-10.0.41.dist-info}/top_level.txt +0 -0
|
@@ -1,279 +1,279 @@
|
|
|
1
|
-
"""
|
|
2
|
-
baserequest
|
|
3
|
-
"""
|
|
4
|
-
import json
|
|
5
|
-
import traceback
|
|
6
|
-
|
|
7
|
-
import requests
|
|
8
|
-
import urllib3
|
|
9
|
-
from urllib3.exceptions import InsecureRequestWarning
|
|
10
|
-
|
|
11
|
-
from re_common.baselibrary.utils.baseurl import BaseUrl
|
|
12
|
-
from re_common.baselibrary.utils.core.mlamada import closeResult
|
|
13
|
-
from re_common.baselibrary.utils.core.requests_core import USER_AGENT, set_proxy
|
|
14
|
-
|
|
15
|
-
ok = requests.codes.ok
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class BaseRequest(object):
|
|
19
|
-
def __init__(self, logger=None):
|
|
20
|
-
if logger is None:
|
|
21
|
-
from re_common.baselibrary import MLogger
|
|
22
|
-
logger = MLogger().streamlogger
|
|
23
|
-
self.logger = logger
|
|
24
|
-
|
|
25
|
-
self.sn = requests.Session()
|
|
26
|
-
self.proxies = None
|
|
27
|
-
# 是否使用类的代理覆盖传入的代理
|
|
28
|
-
self._is_use_proxy = False
|
|
29
|
-
|
|
30
|
-
def set_sn(self):
|
|
31
|
-
sn = requests.Session()
|
|
32
|
-
self.sn = sn
|
|
33
|
-
return sn
|
|
34
|
-
|
|
35
|
-
def set_proxy(self, proxy):
|
|
36
|
-
"""
|
|
37
|
-
配置代理
|
|
38
|
-
:param proxy:
|
|
39
|
-
:return:
|
|
40
|
-
"""
|
|
41
|
-
proxies = set_proxy(proxy)
|
|
42
|
-
self.proxies = proxies
|
|
43
|
-
return proxies
|
|
44
|
-
|
|
45
|
-
def is_use_proxy(self, boolvalues):
|
|
46
|
-
"""
|
|
47
|
-
设置是否使用全局代理
|
|
48
|
-
:param boolvalues:
|
|
49
|
-
:return:
|
|
50
|
-
"""
|
|
51
|
-
self._is_use_proxy = boolvalues
|
|
52
|
-
|
|
53
|
-
def set_sn_header(self, useragent=None):
|
|
54
|
-
if USER_AGENT != None:
|
|
55
|
-
self.sn.headers['User-Agent'] = useragent
|
|
56
|
-
else:
|
|
57
|
-
self.sn.headers['User-Agent'] = USER_AGENT
|
|
58
|
-
|
|
59
|
-
def base_request(self, url, sn=None, endstring="", marks=None, **kwargs):
|
|
60
|
-
"""
|
|
61
|
-
网络请求的基本结构
|
|
62
|
-
:param marks:
|
|
63
|
-
:param url: 请求的url
|
|
64
|
-
:param sn: 会话 sn = requests.Session() 这样保存会话
|
|
65
|
-
:param endstring: 判断html的结束字符串 一般html默认 </html> 结尾
|
|
66
|
-
:param mark: 标志符 默认为"" 你的结果中的一些字符串或特殊的标签都可以
|
|
67
|
-
:param kwargs: requests请求的一些参数
|
|
68
|
-
:return: true表示成功 false表示失败或需要进行检查的数据,同时返回r
|
|
69
|
-
BoolResult, errString, r
|
|
70
|
-
"""
|
|
71
|
-
if marks is None:
|
|
72
|
-
marks = []
|
|
73
|
-
r = None
|
|
74
|
-
exMsg = None
|
|
75
|
-
try:
|
|
76
|
-
urllib3.disable_warnings(InsecureRequestWarning)
|
|
77
|
-
self.logger.info(url)
|
|
78
|
-
# 对https 自动加上verify参数为False
|
|
79
|
-
if BaseUrl.urlScheme(url) == "https":
|
|
80
|
-
kwargs["verify"] = False
|
|
81
|
-
if self._is_use_proxy:
|
|
82
|
-
kwargs["proxies"] = self.proxies
|
|
83
|
-
if sn:
|
|
84
|
-
r = sn.get(url=url, **kwargs)
|
|
85
|
-
else:
|
|
86
|
-
r = requests.get(url=url, **kwargs)
|
|
87
|
-
except:
|
|
88
|
-
exMsg = '* ' + traceback.format_exc()
|
|
89
|
-
self.logger.error(exMsg)
|
|
90
|
-
finally:
|
|
91
|
-
closeResult(r)
|
|
92
|
-
if exMsg:
|
|
93
|
-
self.logger.info("判断到except,请求出项错误")
|
|
94
|
-
return False, "request", r
|
|
95
|
-
|
|
96
|
-
if r.status_code != 200:
|
|
97
|
-
self.logger.warning('r.status_code:' + str(r.status_code))
|
|
98
|
-
return False, "code", r
|
|
99
|
-
|
|
100
|
-
r.encoding = r.apparent_encoding
|
|
101
|
-
if endstring:
|
|
102
|
-
"""
|
|
103
|
-
请求有可能是html或者json等,如果有需要判断html结束的才启动这个选项
|
|
104
|
-
"""
|
|
105
|
-
|
|
106
|
-
html = r.text.strip()
|
|
107
|
-
if not html.endswith(endstring):
|
|
108
|
-
self.logger.info("not endswith {}".format(endstring))
|
|
109
|
-
return False, "endString", r
|
|
110
|
-
|
|
111
|
-
if marks:
|
|
112
|
-
"""
|
|
113
|
-
验证请求是否成功 通过一个特征字符串或者html的标签来查找 保证下载的页面是我需要的页面
|
|
114
|
-
而不是错误页面
|
|
115
|
-
特征值有可能没有是网页出现问题 有可能是请求不完全 这个依照情况而定
|
|
116
|
-
"""
|
|
117
|
-
|
|
118
|
-
html = r.text.strip()
|
|
119
|
-
for mark in marks:
|
|
120
|
-
if html.find(mark) == -1:
|
|
121
|
-
self.logger.info('not found {}'.format(mark))
|
|
122
|
-
return False, "Feature err", r
|
|
123
|
-
else:
|
|
124
|
-
self.logger.info("found mark is {}".format(mark))
|
|
125
|
-
|
|
126
|
-
return True, "", r
|
|
127
|
-
|
|
128
|
-
def base_request_post(self, url, sn=None, data=None, endstring="", marks=None, **kwargs):
|
|
129
|
-
"""
|
|
130
|
-
网络请求的基本结构
|
|
131
|
-
:param marks:
|
|
132
|
-
:param url: 请求的url
|
|
133
|
-
:param sn: 会话 sn = requests.Session() 这样保存会话
|
|
134
|
-
:param endstring: 判断html的结束字符串 一般html默认 </html> 结尾
|
|
135
|
-
:param mark: 标志符 默认为"" 你的结果中的一些字符串或特殊的标签都可以
|
|
136
|
-
:param kwargs: requests请求的一些参数
|
|
137
|
-
:return: true表示成功 false表示失败或需要进行检查的数据,同时返回r
|
|
138
|
-
"""
|
|
139
|
-
if marks is None:
|
|
140
|
-
marks = []
|
|
141
|
-
r = None
|
|
142
|
-
exMsg = None
|
|
143
|
-
try:
|
|
144
|
-
urllib3.disable_warnings(InsecureRequestWarning)
|
|
145
|
-
self.logger.info(url)
|
|
146
|
-
# 对https 自动加上verify参数为False
|
|
147
|
-
if BaseUrl.urlScheme(url) == "https":
|
|
148
|
-
kwargs["verify"] = False
|
|
149
|
-
if self._is_use_proxy:
|
|
150
|
-
kwargs["proxies"] = self.proxies
|
|
151
|
-
if sn:
|
|
152
|
-
r = sn.post(url=url, data=data, **kwargs)
|
|
153
|
-
else:
|
|
154
|
-
r = requests.post(url=url, data=data, **kwargs)
|
|
155
|
-
except:
|
|
156
|
-
exMsg = '* ' + traceback.format_exc()
|
|
157
|
-
self.logger.error(exMsg)
|
|
158
|
-
finally:
|
|
159
|
-
closeResult(r)
|
|
160
|
-
|
|
161
|
-
if exMsg:
|
|
162
|
-
return False, "request", r
|
|
163
|
-
|
|
164
|
-
if r.status_code != 200:
|
|
165
|
-
self.logger.warning('r.status_code:' + str(r.status_code))
|
|
166
|
-
return False, "code", r
|
|
167
|
-
|
|
168
|
-
r.encoding = r.apparent_encoding
|
|
169
|
-
|
|
170
|
-
if endstring:
|
|
171
|
-
"""
|
|
172
|
-
请求有可能是html或者json等,如果有需要判断html结束的才启动这个选项
|
|
173
|
-
"""
|
|
174
|
-
html = r.text.strip()
|
|
175
|
-
if not html.endswith(endstring):
|
|
176
|
-
self.logger.info("not endswith {}".format(endstring))
|
|
177
|
-
return False, "endString", r
|
|
178
|
-
|
|
179
|
-
if marks:
|
|
180
|
-
"""
|
|
181
|
-
验证请求是否成功 通过一个特征字符串或者html的标签来查找 保证下载的页面是我需要的页面
|
|
182
|
-
而不是错误页面
|
|
183
|
-
特征值有可能没有是网页出现问题 有可能是请求不完全 这个依照情况而定
|
|
184
|
-
"""
|
|
185
|
-
html = r.text.strip()
|
|
186
|
-
for mark in marks:
|
|
187
|
-
if html.find(mark) == -1:
|
|
188
|
-
self.logger.info('not found {}'.format(mark))
|
|
189
|
-
return False, "Feature err", r
|
|
190
|
-
else:
|
|
191
|
-
self.logger.info("found mark is {}".format(mark))
|
|
192
|
-
|
|
193
|
-
return True, "", r
|
|
194
|
-
|
|
195
|
-
def post_api(self, url, data, **kwargs):
|
|
196
|
-
dicts = {}
|
|
197
|
-
dicts["result_string"] = None
|
|
198
|
-
dicts["result"] = None
|
|
199
|
-
dicts["exMsg"] = None
|
|
200
|
-
dicts["errtype"] = ""
|
|
201
|
-
r = None
|
|
202
|
-
try:
|
|
203
|
-
try:
|
|
204
|
-
urllib3.disable_warnings(InsecureRequestWarning)
|
|
205
|
-
self.logger.info(url)
|
|
206
|
-
# 对https 自动加上verify参数为False
|
|
207
|
-
if BaseUrl.urlScheme(url) == "https":
|
|
208
|
-
kwargs["verify"] = False
|
|
209
|
-
if self._is_use_proxy:
|
|
210
|
-
kwargs["proxies"] = self.proxies
|
|
211
|
-
r = requests.post(url=url, data=data, **kwargs)
|
|
212
|
-
except:
|
|
213
|
-
dicts["exMsg"] = traceback.format_exc()
|
|
214
|
-
dicts["errtype"] = "请求错误,请查看exMsg"
|
|
215
|
-
return False, dicts
|
|
216
|
-
|
|
217
|
-
dicts_rs = json.loads(r.text)
|
|
218
|
-
dicts["result"] = dicts_rs
|
|
219
|
-
if dicts_rs["status"] == "SUCCESS":
|
|
220
|
-
return True, dicts
|
|
221
|
-
else:
|
|
222
|
-
self.logger.info(r.text)
|
|
223
|
-
return False, dicts
|
|
224
|
-
except:
|
|
225
|
-
if r is not None:
|
|
226
|
-
dicts["result_string"] = r.text
|
|
227
|
-
self.logger.error("出现结果json错误,不应该,请检查:" + r.text)
|
|
228
|
-
self.logger.error(traceback.format_exc())
|
|
229
|
-
dicts["errtype"] = "json错误,请查看result_string"
|
|
230
|
-
return False, dicts
|
|
231
|
-
else:
|
|
232
|
-
dicts["result_string"] = ""
|
|
233
|
-
self.logger.error("出现结果json错误,不应该,请检查,r为空")
|
|
234
|
-
self.logger.error(traceback.format_exc())
|
|
235
|
-
dicts["errtype"] = "json错误,没有数据"
|
|
236
|
-
return False, dicts
|
|
237
|
-
|
|
238
|
-
def get_api(self, url, params=None, **kwargs):
|
|
239
|
-
dicts = {}
|
|
240
|
-
dicts["result_string"] = None
|
|
241
|
-
dicts["result"] = None
|
|
242
|
-
dicts["exMsg"] = None
|
|
243
|
-
dicts["errtype"] = ""
|
|
244
|
-
r = None
|
|
245
|
-
try:
|
|
246
|
-
try:
|
|
247
|
-
urllib3.disable_warnings(InsecureRequestWarning)
|
|
248
|
-
self.logger.info(url)
|
|
249
|
-
# 对https 自动加上verify参数为False
|
|
250
|
-
if BaseUrl.urlScheme(url) == "https":
|
|
251
|
-
kwargs["verify"] = False
|
|
252
|
-
if self._is_use_proxy:
|
|
253
|
-
kwargs["proxies"] = self.proxies
|
|
254
|
-
r = requests.get(url=url, params=params, **kwargs)
|
|
255
|
-
except:
|
|
256
|
-
dicts["exMsg"] = traceback.format_exc()
|
|
257
|
-
dicts["errtype"] = "请求错误,请查看exMsg"
|
|
258
|
-
return False, dicts
|
|
259
|
-
|
|
260
|
-
dicts_rs = json.loads(r.text)
|
|
261
|
-
dicts["result"] = dicts_rs
|
|
262
|
-
if dicts_rs["status"] == "SUCCESS":
|
|
263
|
-
return True, dicts
|
|
264
|
-
else:
|
|
265
|
-
self.logger.info(r.text)
|
|
266
|
-
return False, dicts
|
|
267
|
-
except:
|
|
268
|
-
if r is not None:
|
|
269
|
-
dicts["result_string"] = r.text
|
|
270
|
-
self.logger.error("出现结果json错误,不应该,请检查:" + r.text)
|
|
271
|
-
self.logger.error(traceback.format_exc())
|
|
272
|
-
dicts["errtype"] = "json错误,请查看result_string"
|
|
273
|
-
return False, dicts
|
|
274
|
-
else:
|
|
275
|
-
dicts["result_string"] = ""
|
|
276
|
-
self.logger.error("出现结果json错误,不应该,请检查,r为空")
|
|
277
|
-
self.logger.error(traceback.format_exc())
|
|
278
|
-
dicts["errtype"] = "json错误,没有数据"
|
|
279
|
-
return False, dicts
|
|
1
|
+
"""
|
|
2
|
+
baserequest
|
|
3
|
+
"""
|
|
4
|
+
import json
|
|
5
|
+
import traceback
|
|
6
|
+
|
|
7
|
+
import requests
|
|
8
|
+
import urllib3
|
|
9
|
+
from urllib3.exceptions import InsecureRequestWarning
|
|
10
|
+
|
|
11
|
+
from re_common.baselibrary.utils.baseurl import BaseUrl
|
|
12
|
+
from re_common.baselibrary.utils.core.mlamada import closeResult
|
|
13
|
+
from re_common.baselibrary.utils.core.requests_core import USER_AGENT, set_proxy
|
|
14
|
+
|
|
15
|
+
ok = requests.codes.ok
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class BaseRequest(object):
|
|
19
|
+
def __init__(self, logger=None):
|
|
20
|
+
if logger is None:
|
|
21
|
+
from re_common.baselibrary import MLogger
|
|
22
|
+
logger = MLogger().streamlogger
|
|
23
|
+
self.logger = logger
|
|
24
|
+
|
|
25
|
+
self.sn = requests.Session()
|
|
26
|
+
self.proxies = None
|
|
27
|
+
# 是否使用类的代理覆盖传入的代理
|
|
28
|
+
self._is_use_proxy = False
|
|
29
|
+
|
|
30
|
+
def set_sn(self):
|
|
31
|
+
sn = requests.Session()
|
|
32
|
+
self.sn = sn
|
|
33
|
+
return sn
|
|
34
|
+
|
|
35
|
+
def set_proxy(self, proxy):
|
|
36
|
+
"""
|
|
37
|
+
配置代理
|
|
38
|
+
:param proxy:
|
|
39
|
+
:return:
|
|
40
|
+
"""
|
|
41
|
+
proxies = set_proxy(proxy)
|
|
42
|
+
self.proxies = proxies
|
|
43
|
+
return proxies
|
|
44
|
+
|
|
45
|
+
def is_use_proxy(self, boolvalues):
|
|
46
|
+
"""
|
|
47
|
+
设置是否使用全局代理
|
|
48
|
+
:param boolvalues:
|
|
49
|
+
:return:
|
|
50
|
+
"""
|
|
51
|
+
self._is_use_proxy = boolvalues
|
|
52
|
+
|
|
53
|
+
def set_sn_header(self, useragent=None):
|
|
54
|
+
if USER_AGENT != None:
|
|
55
|
+
self.sn.headers['User-Agent'] = useragent
|
|
56
|
+
else:
|
|
57
|
+
self.sn.headers['User-Agent'] = USER_AGENT
|
|
58
|
+
|
|
59
|
+
def base_request(self, url, sn=None, endstring="", marks=None, **kwargs):
|
|
60
|
+
"""
|
|
61
|
+
网络请求的基本结构
|
|
62
|
+
:param marks:
|
|
63
|
+
:param url: 请求的url
|
|
64
|
+
:param sn: 会话 sn = requests.Session() 这样保存会话
|
|
65
|
+
:param endstring: 判断html的结束字符串 一般html默认 </html> 结尾
|
|
66
|
+
:param mark: 标志符 默认为"" 你的结果中的一些字符串或特殊的标签都可以
|
|
67
|
+
:param kwargs: requests请求的一些参数
|
|
68
|
+
:return: true表示成功 false表示失败或需要进行检查的数据,同时返回r
|
|
69
|
+
BoolResult, errString, r
|
|
70
|
+
"""
|
|
71
|
+
if marks is None:
|
|
72
|
+
marks = []
|
|
73
|
+
r = None
|
|
74
|
+
exMsg = None
|
|
75
|
+
try:
|
|
76
|
+
urllib3.disable_warnings(InsecureRequestWarning)
|
|
77
|
+
self.logger.info(url)
|
|
78
|
+
# 对https 自动加上verify参数为False
|
|
79
|
+
if BaseUrl.urlScheme(url) == "https":
|
|
80
|
+
kwargs["verify"] = False
|
|
81
|
+
if self._is_use_proxy:
|
|
82
|
+
kwargs["proxies"] = self.proxies
|
|
83
|
+
if sn:
|
|
84
|
+
r = sn.get(url=url, **kwargs)
|
|
85
|
+
else:
|
|
86
|
+
r = requests.get(url=url, **kwargs)
|
|
87
|
+
except:
|
|
88
|
+
exMsg = '* ' + traceback.format_exc()
|
|
89
|
+
self.logger.error(exMsg)
|
|
90
|
+
finally:
|
|
91
|
+
closeResult(r)
|
|
92
|
+
if exMsg:
|
|
93
|
+
self.logger.info("判断到except,请求出项错误")
|
|
94
|
+
return False, "request", r
|
|
95
|
+
|
|
96
|
+
if r.status_code != 200:
|
|
97
|
+
self.logger.warning('r.status_code:' + str(r.status_code))
|
|
98
|
+
return False, "code", r
|
|
99
|
+
|
|
100
|
+
r.encoding = r.apparent_encoding
|
|
101
|
+
if endstring:
|
|
102
|
+
"""
|
|
103
|
+
请求有可能是html或者json等,如果有需要判断html结束的才启动这个选项
|
|
104
|
+
"""
|
|
105
|
+
|
|
106
|
+
html = r.text.strip()
|
|
107
|
+
if not html.endswith(endstring):
|
|
108
|
+
self.logger.info("not endswith {}".format(endstring))
|
|
109
|
+
return False, "endString", r
|
|
110
|
+
|
|
111
|
+
if marks:
|
|
112
|
+
"""
|
|
113
|
+
验证请求是否成功 通过一个特征字符串或者html的标签来查找 保证下载的页面是我需要的页面
|
|
114
|
+
而不是错误页面
|
|
115
|
+
特征值有可能没有是网页出现问题 有可能是请求不完全 这个依照情况而定
|
|
116
|
+
"""
|
|
117
|
+
|
|
118
|
+
html = r.text.strip()
|
|
119
|
+
for mark in marks:
|
|
120
|
+
if html.find(mark) == -1:
|
|
121
|
+
self.logger.info('not found {}'.format(mark))
|
|
122
|
+
return False, "Feature err", r
|
|
123
|
+
else:
|
|
124
|
+
self.logger.info("found mark is {}".format(mark))
|
|
125
|
+
|
|
126
|
+
return True, "", r
|
|
127
|
+
|
|
128
|
+
def base_request_post(self, url, sn=None, data=None, endstring="", marks=None, **kwargs):
|
|
129
|
+
"""
|
|
130
|
+
网络请求的基本结构
|
|
131
|
+
:param marks:
|
|
132
|
+
:param url: 请求的url
|
|
133
|
+
:param sn: 会话 sn = requests.Session() 这样保存会话
|
|
134
|
+
:param endstring: 判断html的结束字符串 一般html默认 </html> 结尾
|
|
135
|
+
:param mark: 标志符 默认为"" 你的结果中的一些字符串或特殊的标签都可以
|
|
136
|
+
:param kwargs: requests请求的一些参数
|
|
137
|
+
:return: true表示成功 false表示失败或需要进行检查的数据,同时返回r
|
|
138
|
+
"""
|
|
139
|
+
if marks is None:
|
|
140
|
+
marks = []
|
|
141
|
+
r = None
|
|
142
|
+
exMsg = None
|
|
143
|
+
try:
|
|
144
|
+
urllib3.disable_warnings(InsecureRequestWarning)
|
|
145
|
+
self.logger.info(url)
|
|
146
|
+
# 对https 自动加上verify参数为False
|
|
147
|
+
if BaseUrl.urlScheme(url) == "https":
|
|
148
|
+
kwargs["verify"] = False
|
|
149
|
+
if self._is_use_proxy:
|
|
150
|
+
kwargs["proxies"] = self.proxies
|
|
151
|
+
if sn:
|
|
152
|
+
r = sn.post(url=url, data=data, **kwargs)
|
|
153
|
+
else:
|
|
154
|
+
r = requests.post(url=url, data=data, **kwargs)
|
|
155
|
+
except:
|
|
156
|
+
exMsg = '* ' + traceback.format_exc()
|
|
157
|
+
self.logger.error(exMsg)
|
|
158
|
+
finally:
|
|
159
|
+
closeResult(r)
|
|
160
|
+
|
|
161
|
+
if exMsg:
|
|
162
|
+
return False, "request", r
|
|
163
|
+
|
|
164
|
+
if r.status_code != 200:
|
|
165
|
+
self.logger.warning('r.status_code:' + str(r.status_code))
|
|
166
|
+
return False, "code", r
|
|
167
|
+
|
|
168
|
+
r.encoding = r.apparent_encoding
|
|
169
|
+
|
|
170
|
+
if endstring:
|
|
171
|
+
"""
|
|
172
|
+
请求有可能是html或者json等,如果有需要判断html结束的才启动这个选项
|
|
173
|
+
"""
|
|
174
|
+
html = r.text.strip()
|
|
175
|
+
if not html.endswith(endstring):
|
|
176
|
+
self.logger.info("not endswith {}".format(endstring))
|
|
177
|
+
return False, "endString", r
|
|
178
|
+
|
|
179
|
+
if marks:
|
|
180
|
+
"""
|
|
181
|
+
验证请求是否成功 通过一个特征字符串或者html的标签来查找 保证下载的页面是我需要的页面
|
|
182
|
+
而不是错误页面
|
|
183
|
+
特征值有可能没有是网页出现问题 有可能是请求不完全 这个依照情况而定
|
|
184
|
+
"""
|
|
185
|
+
html = r.text.strip()
|
|
186
|
+
for mark in marks:
|
|
187
|
+
if html.find(mark) == -1:
|
|
188
|
+
self.logger.info('not found {}'.format(mark))
|
|
189
|
+
return False, "Feature err", r
|
|
190
|
+
else:
|
|
191
|
+
self.logger.info("found mark is {}".format(mark))
|
|
192
|
+
|
|
193
|
+
return True, "", r
|
|
194
|
+
|
|
195
|
+
def post_api(self, url, data, **kwargs):
|
|
196
|
+
dicts = {}
|
|
197
|
+
dicts["result_string"] = None
|
|
198
|
+
dicts["result"] = None
|
|
199
|
+
dicts["exMsg"] = None
|
|
200
|
+
dicts["errtype"] = ""
|
|
201
|
+
r = None
|
|
202
|
+
try:
|
|
203
|
+
try:
|
|
204
|
+
urllib3.disable_warnings(InsecureRequestWarning)
|
|
205
|
+
self.logger.info(url)
|
|
206
|
+
# 对https 自动加上verify参数为False
|
|
207
|
+
if BaseUrl.urlScheme(url) == "https":
|
|
208
|
+
kwargs["verify"] = False
|
|
209
|
+
if self._is_use_proxy:
|
|
210
|
+
kwargs["proxies"] = self.proxies
|
|
211
|
+
r = requests.post(url=url, data=data, **kwargs)
|
|
212
|
+
except:
|
|
213
|
+
dicts["exMsg"] = traceback.format_exc()
|
|
214
|
+
dicts["errtype"] = "请求错误,请查看exMsg"
|
|
215
|
+
return False, dicts
|
|
216
|
+
|
|
217
|
+
dicts_rs = json.loads(r.text)
|
|
218
|
+
dicts["result"] = dicts_rs
|
|
219
|
+
if dicts_rs["status"] == "SUCCESS":
|
|
220
|
+
return True, dicts
|
|
221
|
+
else:
|
|
222
|
+
self.logger.info(r.text)
|
|
223
|
+
return False, dicts
|
|
224
|
+
except:
|
|
225
|
+
if r is not None:
|
|
226
|
+
dicts["result_string"] = r.text
|
|
227
|
+
self.logger.error("出现结果json错误,不应该,请检查:" + r.text)
|
|
228
|
+
self.logger.error(traceback.format_exc())
|
|
229
|
+
dicts["errtype"] = "json错误,请查看result_string"
|
|
230
|
+
return False, dicts
|
|
231
|
+
else:
|
|
232
|
+
dicts["result_string"] = ""
|
|
233
|
+
self.logger.error("出现结果json错误,不应该,请检查,r为空")
|
|
234
|
+
self.logger.error(traceback.format_exc())
|
|
235
|
+
dicts["errtype"] = "json错误,没有数据"
|
|
236
|
+
return False, dicts
|
|
237
|
+
|
|
238
|
+
def get_api(self, url, params=None, **kwargs):
|
|
239
|
+
dicts = {}
|
|
240
|
+
dicts["result_string"] = None
|
|
241
|
+
dicts["result"] = None
|
|
242
|
+
dicts["exMsg"] = None
|
|
243
|
+
dicts["errtype"] = ""
|
|
244
|
+
r = None
|
|
245
|
+
try:
|
|
246
|
+
try:
|
|
247
|
+
urllib3.disable_warnings(InsecureRequestWarning)
|
|
248
|
+
self.logger.info(url)
|
|
249
|
+
# 对https 自动加上verify参数为False
|
|
250
|
+
if BaseUrl.urlScheme(url) == "https":
|
|
251
|
+
kwargs["verify"] = False
|
|
252
|
+
if self._is_use_proxy:
|
|
253
|
+
kwargs["proxies"] = self.proxies
|
|
254
|
+
r = requests.get(url=url, params=params, **kwargs)
|
|
255
|
+
except:
|
|
256
|
+
dicts["exMsg"] = traceback.format_exc()
|
|
257
|
+
dicts["errtype"] = "请求错误,请查看exMsg"
|
|
258
|
+
return False, dicts
|
|
259
|
+
|
|
260
|
+
dicts_rs = json.loads(r.text)
|
|
261
|
+
dicts["result"] = dicts_rs
|
|
262
|
+
if dicts_rs["status"] == "SUCCESS":
|
|
263
|
+
return True, dicts
|
|
264
|
+
else:
|
|
265
|
+
self.logger.info(r.text)
|
|
266
|
+
return False, dicts
|
|
267
|
+
except:
|
|
268
|
+
if r is not None:
|
|
269
|
+
dicts["result_string"] = r.text
|
|
270
|
+
self.logger.error("出现结果json错误,不应该,请检查:" + r.text)
|
|
271
|
+
self.logger.error(traceback.format_exc())
|
|
272
|
+
dicts["errtype"] = "json错误,请查看result_string"
|
|
273
|
+
return False, dicts
|
|
274
|
+
else:
|
|
275
|
+
dicts["result_string"] = ""
|
|
276
|
+
self.logger.error("出现结果json错误,不应该,请检查,r为空")
|
|
277
|
+
self.logger.error(traceback.format_exc())
|
|
278
|
+
dicts["errtype"] = "json错误,没有数据"
|
|
279
|
+
return False, dicts
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
class BaseSet(object):
|
|
2
|
-
|
|
3
|
-
def __init__(self):
|
|
4
|
-
pass
|
|
5
|
-
|
|
6
|
-
def union(self, *args):
|
|
7
|
-
one = set()
|
|
8
|
-
return one.union(*args)
|
|
1
|
+
class BaseSet(object):
|
|
2
|
+
|
|
3
|
+
def __init__(self):
|
|
4
|
+
pass
|
|
5
|
+
|
|
6
|
+
def union(self, *args):
|
|
7
|
+
one = set()
|
|
8
|
+
return one.union(*args)
|