re-common 10.0.39__py3-none-any.whl → 10.0.40__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.
Files changed (218) hide show
  1. re_common/baselibrary/__init__.py +4 -4
  2. re_common/baselibrary/baseabs/__init__.py +6 -6
  3. re_common/baselibrary/baseabs/baseabs.py +26 -26
  4. re_common/baselibrary/database/mbuilder.py +132 -132
  5. re_common/baselibrary/database/moudle.py +93 -93
  6. re_common/baselibrary/database/msqlite3.py +194 -194
  7. re_common/baselibrary/database/mysql.py +169 -169
  8. re_common/baselibrary/database/sql_factory.py +26 -26
  9. re_common/baselibrary/mthread/MThreadingRun.py +486 -486
  10. re_common/baselibrary/mthread/MThreadingRunEvent.py +349 -349
  11. re_common/baselibrary/mthread/__init__.py +2 -2
  12. re_common/baselibrary/mthread/mythreading.py +695 -695
  13. re_common/baselibrary/pakge_other/socks.py +404 -404
  14. re_common/baselibrary/readconfig/config_factory.py +18 -18
  15. re_common/baselibrary/readconfig/ini_config.py +317 -317
  16. re_common/baselibrary/readconfig/toml_config.py +49 -49
  17. re_common/baselibrary/temporary/envdata.py +36 -36
  18. re_common/baselibrary/tools/all_requests/aiohttp_request.py +118 -118
  19. re_common/baselibrary/tools/all_requests/httpx_requet.py +102 -102
  20. re_common/baselibrary/tools/all_requests/mrequest.py +412 -412
  21. re_common/baselibrary/tools/all_requests/requests_request.py +81 -81
  22. re_common/baselibrary/tools/batch_compre/bijiao_batch.py +31 -31
  23. re_common/baselibrary/tools/contrast_db3.py +123 -123
  24. re_common/baselibrary/tools/copy_file.py +39 -39
  25. re_common/baselibrary/tools/db3_2_sizedb3.py +102 -102
  26. re_common/baselibrary/tools/foreachgz.py +39 -39
  27. re_common/baselibrary/tools/get_attr.py +10 -10
  28. re_common/baselibrary/tools/image_to_pdf.py +61 -61
  29. re_common/baselibrary/tools/java_code_deal.py +139 -139
  30. re_common/baselibrary/tools/javacode.py +79 -79
  31. re_common/baselibrary/tools/mdb_db3.py +48 -48
  32. re_common/baselibrary/tools/merge_file.py +171 -171
  33. re_common/baselibrary/tools/merge_gz_file.py +165 -165
  34. re_common/baselibrary/tools/mhdfstools/down_hdfs_files.py +42 -42
  35. re_common/baselibrary/tools/mhdfstools/hdfst.py +42 -42
  36. re_common/baselibrary/tools/mhdfstools/up_hdfs_files.py +38 -38
  37. re_common/baselibrary/tools/mongo_tools.py +50 -50
  38. re_common/baselibrary/tools/move_file.py +170 -170
  39. re_common/baselibrary/tools/move_mongo/mongo_table_to_file.py +63 -63
  40. re_common/baselibrary/tools/move_mongo/move_mongo_table.py +354 -354
  41. re_common/baselibrary/tools/move_mongo/use_mttf.py +18 -18
  42. re_common/baselibrary/tools/move_mongo/use_mv.py +93 -93
  43. re_common/baselibrary/tools/mpandas/mpandasreadexcel.py +125 -125
  44. re_common/baselibrary/tools/mpandas/pandas_visualization.py +7 -7
  45. re_common/baselibrary/tools/myparsel.py +104 -104
  46. re_common/baselibrary/tools/rename_dir_file.py +37 -37
  47. re_common/baselibrary/tools/sequoiadb_utils.py +398 -398
  48. re_common/baselibrary/tools/split_line_to_many.py +25 -25
  49. re_common/baselibrary/tools/stringtodicts.py +33 -33
  50. re_common/baselibrary/tools/workwechant_bot.py +84 -84
  51. re_common/baselibrary/utils/baseaiohttp.py +296 -296
  52. re_common/baselibrary/utils/baseaiomysql.py +87 -87
  53. re_common/baselibrary/utils/baseallstep.py +191 -191
  54. re_common/baselibrary/utils/baseavro.py +19 -19
  55. re_common/baselibrary/utils/baseboto3.py +291 -291
  56. re_common/baselibrary/utils/basecsv.py +32 -32
  57. re_common/baselibrary/utils/basedict.py +133 -133
  58. re_common/baselibrary/utils/basedir.py +241 -241
  59. re_common/baselibrary/utils/baseencode.py +351 -351
  60. re_common/baselibrary/utils/baseencoding.py +28 -28
  61. re_common/baselibrary/utils/baseesdsl.py +86 -86
  62. re_common/baselibrary/utils/baseexcel.py +264 -264
  63. re_common/baselibrary/utils/baseexcept.py +109 -109
  64. re_common/baselibrary/utils/basefile.py +654 -654
  65. re_common/baselibrary/utils/baseftp.py +214 -214
  66. re_common/baselibrary/utils/basegzip.py +60 -60
  67. re_common/baselibrary/utils/basehdfs.py +135 -135
  68. re_common/baselibrary/utils/basehttpx.py +268 -268
  69. re_common/baselibrary/utils/baseip.py +87 -87
  70. re_common/baselibrary/utils/basejson.py +2 -2
  71. re_common/baselibrary/utils/baselist.py +32 -32
  72. re_common/baselibrary/utils/basemotor.py +190 -190
  73. re_common/baselibrary/utils/basemssql.py +98 -98
  74. re_common/baselibrary/utils/baseodbc.py +113 -113
  75. re_common/baselibrary/utils/basepandas.py +302 -302
  76. re_common/baselibrary/utils/basepeewee.py +11 -11
  77. re_common/baselibrary/utils/basepika.py +180 -180
  78. re_common/baselibrary/utils/basepydash.py +143 -143
  79. re_common/baselibrary/utils/basepymongo.py +230 -230
  80. re_common/baselibrary/utils/basequeue.py +22 -22
  81. re_common/baselibrary/utils/baserar.py +57 -57
  82. re_common/baselibrary/utils/baserequest.py +279 -279
  83. re_common/baselibrary/utils/baseset.py +8 -8
  84. re_common/baselibrary/utils/basesmb.py +403 -403
  85. re_common/baselibrary/utils/basestring.py +382 -382
  86. re_common/baselibrary/utils/basetime.py +320 -320
  87. re_common/baselibrary/utils/baseurl.py +121 -121
  88. re_common/baselibrary/utils/basezip.py +57 -57
  89. re_common/baselibrary/utils/core/__init__.py +7 -7
  90. re_common/baselibrary/utils/core/bottomutils.py +18 -18
  91. re_common/baselibrary/utils/core/mdeprecated.py +327 -327
  92. re_common/baselibrary/utils/core/mlamada.py +16 -16
  93. re_common/baselibrary/utils/core/msginfo.py +25 -25
  94. re_common/baselibrary/utils/core/requests_core.py +103 -103
  95. re_common/baselibrary/utils/fateadm.py +429 -429
  96. re_common/baselibrary/utils/importfun.py +123 -123
  97. re_common/baselibrary/utils/mfaker.py +57 -57
  98. re_common/baselibrary/utils/my_abc/__init__.py +3 -3
  99. re_common/baselibrary/utils/my_abc/better_abc.py +32 -32
  100. re_common/baselibrary/utils/mylogger.py +414 -414
  101. re_common/baselibrary/utils/myredisclient.py +861 -861
  102. re_common/baselibrary/utils/pipupgrade.py +21 -21
  103. re_common/baselibrary/utils/ringlist.py +85 -85
  104. re_common/baselibrary/utils/version_compare.py +36 -36
  105. re_common/baselibrary/utils/ydmhttp.py +126 -126
  106. re_common/facade/lazy_import.py +11 -11
  107. re_common/facade/loggerfacade.py +25 -25
  108. re_common/facade/mysqlfacade.py +467 -467
  109. re_common/facade/now.py +31 -31
  110. re_common/facade/sqlite3facade.py +257 -257
  111. re_common/facade/use/mq_use_facade.py +83 -83
  112. re_common/facade/use/proxy_use_facade.py +19 -19
  113. re_common/libtest/base_dict_test.py +19 -19
  114. re_common/libtest/baseavro_test.py +13 -13
  115. re_common/libtest/basefile_test.py +14 -14
  116. re_common/libtest/basemssql_test.py +77 -77
  117. re_common/libtest/baseodbc_test.py +7 -7
  118. re_common/libtest/basepandas_test.py +38 -38
  119. re_common/libtest/get_attr_test/get_attr_test_settings.py +14 -14
  120. re_common/libtest/get_attr_test/settings.py +54 -54
  121. re_common/libtest/idencode_test.py +53 -53
  122. re_common/libtest/iniconfig_test.py +35 -35
  123. re_common/libtest/ip_test.py +34 -34
  124. re_common/libtest/merge_file_test.py +20 -20
  125. re_common/libtest/mfaker_test.py +8 -8
  126. re_common/libtest/mm3_test.py +31 -31
  127. re_common/libtest/mylogger_test.py +88 -88
  128. re_common/libtest/myparsel_test.py +27 -27
  129. re_common/libtest/mysql_test.py +151 -151
  130. re_common/libtest/pymongo_test.py +21 -21
  131. re_common/libtest/split_test.py +11 -11
  132. re_common/libtest/sqlite3_merge_test.py +5 -5
  133. re_common/libtest/sqlite3_test.py +34 -34
  134. re_common/libtest/tomlconfig_test.py +30 -30
  135. re_common/libtest/use_tools_test/__init__.py +2 -2
  136. re_common/libtest/user/__init__.py +4 -4
  137. re_common/studio/__init__.py +4 -4
  138. re_common/studio/assignment_expressions.py +36 -36
  139. re_common/studio/mydash/test1.py +18 -18
  140. re_common/studio/pydashstudio/first.py +9 -9
  141. re_common/studio/streamlitstudio/first_app.py +65 -65
  142. re_common/studio/streamlitstudio/uber_pickups.py +23 -23
  143. re_common/studio/test.py +18 -18
  144. re_common/v2/baselibrary/business_utils/BusinessStringUtil.py +219 -219
  145. re_common/v2/baselibrary/business_utils/baseencodeid.py +100 -100
  146. re_common/v2/baselibrary/business_utils/full_doi_path.py +116 -116
  147. re_common/v2/baselibrary/business_utils/rel_tools.py +6 -6
  148. re_common/v2/baselibrary/decorators/utils.py +59 -59
  149. re_common/v2/baselibrary/helpers/search_packge/NearestNeighbors_test.py +105 -105
  150. re_common/v2/baselibrary/helpers/search_packge/fit_text_match.py +253 -253
  151. re_common/v2/baselibrary/helpers/search_packge/scikit_learn_text_matcher.py +260 -260
  152. re_common/v2/baselibrary/helpers/search_packge/test.py +1 -1
  153. re_common/v2/baselibrary/s3object/baseboto3.py +230 -230
  154. re_common/v2/baselibrary/tools/WeChatRobot.py +95 -95
  155. re_common/v2/baselibrary/tools/ac_ahocorasick.py +75 -75
  156. re_common/v2/baselibrary/tools/concurrency.py +35 -35
  157. re_common/v2/baselibrary/tools/data_processer/base.py +53 -53
  158. re_common/v2/baselibrary/tools/data_processer/data_processer.py +508 -508
  159. re_common/v2/baselibrary/tools/data_processer/data_reader.py +187 -187
  160. re_common/v2/baselibrary/tools/data_processer/data_writer.py +38 -38
  161. re_common/v2/baselibrary/tools/dict_tools.py +44 -44
  162. re_common/v2/baselibrary/tools/dolphinscheduler.py +187 -187
  163. re_common/v2/baselibrary/tools/hdfs_base_processor.py +204 -204
  164. re_common/v2/baselibrary/tools/hdfs_bulk_processor.py +67 -67
  165. re_common/v2/baselibrary/tools/hdfs_data_processer.py +338 -338
  166. re_common/v2/baselibrary/tools/hdfs_line_processor.py +74 -74
  167. re_common/v2/baselibrary/tools/list_tools.py +69 -69
  168. re_common/v2/baselibrary/tools/resume_tracker.py +94 -94
  169. re_common/v2/baselibrary/tools/search_hash_tools.py +54 -54
  170. re_common/v2/baselibrary/tools/text_matcher.py +326 -326
  171. re_common/v2/baselibrary/tools/unionfind_tools.py +60 -60
  172. re_common/v2/baselibrary/utils/BusinessStringUtil.py +196 -196
  173. re_common/v2/baselibrary/utils/api_net_utils.py +270 -270
  174. re_common/v2/baselibrary/utils/author_smi.py +361 -361
  175. re_common/v2/baselibrary/utils/base_string_similarity.py +158 -158
  176. re_common/v2/baselibrary/utils/basedict.py +37 -37
  177. re_common/v2/baselibrary/utils/basehdfs.py +163 -163
  178. re_common/v2/baselibrary/utils/basepika.py +180 -180
  179. re_common/v2/baselibrary/utils/basetime.py +77 -77
  180. re_common/v2/baselibrary/utils/db.py +156 -156
  181. re_common/v2/baselibrary/utils/elasticsearch.py +46 -0
  182. re_common/v2/baselibrary/utils/json_cls.py +16 -16
  183. re_common/v2/baselibrary/utils/mq.py +83 -83
  184. re_common/v2/baselibrary/utils/n_ary_expression_tree.py +243 -243
  185. re_common/v2/baselibrary/utils/string_bool.py +186 -186
  186. re_common/v2/baselibrary/utils/string_clear.py +246 -246
  187. re_common/v2/baselibrary/utils/string_smi.py +18 -18
  188. re_common/v2/baselibrary/utils/stringutils.py +271 -271
  189. re_common/vip/base_step_process.py +11 -11
  190. re_common/vip/baseencodeid.py +90 -90
  191. re_common/vip/changetaskname.py +28 -28
  192. re_common/vip/core_var.py +24 -24
  193. re_common/vip/mmh3Hash.py +89 -89
  194. re_common/vip/proxy/allproxys.py +127 -127
  195. re_common/vip/proxy/allproxys_thread.py +159 -159
  196. re_common/vip/proxy/cnki_proxy.py +153 -153
  197. re_common/vip/proxy/kuaidaili.py +87 -87
  198. re_common/vip/proxy/proxy_all.py +113 -113
  199. re_common/vip/proxy/update_kuaidaili_0.py +42 -42
  200. re_common/vip/proxy/wanfang_proxy.py +152 -152
  201. re_common/vip/proxy/wp_proxy_all.py +181 -181
  202. re_common/vip/read_rawid_to_txt.py +91 -91
  203. re_common/vip/title/__init__.py +5 -5
  204. re_common/vip/title/transform/TransformBookTitleToZt.py +125 -125
  205. re_common/vip/title/transform/TransformConferenceTitleToZt.py +139 -139
  206. re_common/vip/title/transform/TransformCstadTitleToZt.py +195 -195
  207. re_common/vip/title/transform/TransformJournalTitleToZt.py +203 -203
  208. re_common/vip/title/transform/TransformPatentTitleToZt.py +132 -132
  209. re_common/vip/title/transform/TransformRegulationTitleToZt.py +114 -114
  210. re_common/vip/title/transform/TransformStandardTitleToZt.py +135 -135
  211. re_common/vip/title/transform/TransformThesisTitleToZt.py +135 -135
  212. re_common/vip/title/transform/__init__.py +10 -10
  213. {re_common-10.0.39.dist-info → re_common-10.0.40.dist-info}/LICENSE +201 -201
  214. {re_common-10.0.39.dist-info → re_common-10.0.40.dist-info}/METADATA +24 -16
  215. re_common-10.0.40.dist-info/RECORD +249 -0
  216. {re_common-10.0.39.dist-info → re_common-10.0.40.dist-info}/WHEEL +1 -1
  217. re_common-10.0.39.dist-info/RECORD +0 -248
  218. {re_common-10.0.39.dist-info → re_common-10.0.40.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)