· 5 years ago · Aug 08, 2020, 06:44 PM
1import sqlite3
2from random import choice, uniform
3from time import sleep
4
5import requests
6from fake_useragent import UserAgent
7
8ua = UserAgent()
9e = []
10def proxy():
11 q = choice(e)
12 proxy = {q['schema']: q['address']}
13 print(proxy)
14 return proxy
15
16print("Введите регион...")
17region = str(input())
18KOD_REG = {
19 "01": "Республика Адыгея",
20 "02": "Республика Башкортостан (также 102)",
21 "03": "Республика Бурятия",
22 "04": "Республика Алтай",
23 "05": "Республика Дагестан",
24 "06": "Республика Ингушетия",
25 "07": "Кабардино-Балкарская Республика",
26 "08": "Республика Калмыкия",
27 "09": "Карачаево-Черкесская Республика",
28 "10": "Республика Карелия ",
29 "11": "Республика Коми",
30 "12": "Республика Марий Эл",
31 "13": "Республика Мордовия",
32 "14": "Республика Саха (Якутия)",
33 "15": "Республика Северная Осетия",
34 "16": "Республика Татарстан (также 116)",
35 "17": "Республика Тыва (Тува)",
36 "18": "Удмуртская Республика (также 118)",
37 "19": "Республика Хакасия",
38 "20": "Чеченская Республика (старые номера) ",
39 "21": "Чувашская Республика (также 121) ",
40 "22": "Алтайский край ",
41 "23": "Краснодарский край (также 93)",
42 "24": "Красноярский край ",
43 "25": "Приморский край (также 125)",
44 "26": "Ставропольский край",
45 "27": "Хабаровский край",
46 "28": "Амурская область",
47 "29": "Архангельская область",
48 "30": "Астраханская область",
49 "31": "Белгородская область",
50 "32": "Брянская область",
51 "33": "Владимирская область",
52 "34": "Волгоградская область",
53 "35": "Вологодская область",
54 "36": "Воронежская область",
55 "37": "Ивановская область",
56 "38": "Иркутская область (также 138)",
57 "39": "Калининградская область",
58 "40": "Калужская область",
59 "41": "Камчатский край",
60 "42": "Кемеровская область",
61 "43": "Кировская область",
62 "44": "Костромская область",
63 "45": "Курганская область",
64 "46": "Курская область",
65 "47": "Ленинградская область",
66 "48": "Липецкая область",
67 "49": "Магаданская область",
68 "50": "Московская область (также 90, 150)",
69 "51": "Мурманская область",
70 "52": "Нижегородская область (также 152)",
71 "53": "Новгородская область",
72 "54": "Новосибирская область (также 154)",
73 "55": "Омская область",
74 "56": "Оренбургская область",
75 "57": "Орловская область",
76 "58": "Пензенская область",
77 "59": "Пермская область (также 159)",
78 "60": "Псковская область",
79 "61": "Ростовская область (также 161)",
80 "62": "Рязанская область",
81 "63": "Самарская область (также 163)",
82 "64": "Саратовская область (также 164)",
83 "65": "Сахалинская область",
84 "66": "Свердловская область (также 96)",
85 "67": "Смоленская область",
86 "68": "Тамбовская область",
87 "69": "Тверская область",
88 "70": "Томская область",
89 "71": "Тульская область",
90 "72": "Тюменская область",
91 "73": "Ульяновская область (также 173)",
92 "74": "Челябинская область (также 174)",
93 "75": "Читинская область",
94 "76": "Ярославская область",
95 "77": "г. Москва (также 97, 99, 177, 197, 199)",
96 "78": "г. Санкт-Петербург (также 98)",
97 "79": "Еврейская автономная область",
98 "80": "Агинский Бурятский автономный округ",
99 "81": "Коми-Пермяцкий автономный округ",
100 "82": "Республика Крым",
101 "83": "Ненецкий автономный округ",
102 "84": "Таймырский автономный округ",
103 "85": "Усть-Ордынский Бурятский автономный округ",
104 "86": "Ханты-Мансийский автономный округ",
105 "87": "Чукотский автономный округ",
106 "88": "Эвенкийский автономный округ",
107 "89": "Ямало-Ненецкий автономный округ",
108 "90": "Московская область (также 50, 150)",
109 "92": "Севастополь",
110 "93": "Краснодарский край (также 23)",
111 "94": "Территории, которые находятся за пределами РФ и обслуживаеются Управлением режимных объектов МВД (напр. Байконур)",
112 "95": "Чеченская Республика (новые номера)",
113 "96": "Свердловская область (также 66)",
114 "97": "г. Москва (также 77, 99, 177, 197, 199)",
115 "98": "г. Санкт-Петербург (также 78)",
116 "99": "г. Москва (также 77, 97, 177, 197, 199)",
117 "102": "Республика Башкортостан (также 02)",
118 "116": "Республика Татарстан (также 16)",
119 "118": "Удмуртская Республика (также 18)",
120 "121": "Чувашская Республика (также 21)",
121 "125": "Приморский край (также 25)",
122 "138": "Иркутская область (также 38)",
123 "150": "Московская область (также 50, 90)",
124 "152": "Нижегородская область (также 52)",
125 "154": "Новосибирская область (также 54)",
126 "159": "Пермская область (также 59)",
127 "161": "Ростовская область (также 61)",
128 "163": "Самарская область (также 63)",
129 "164": "Саратовская область (также 64)",
130 "173": "Ульяновская область (также 73)",
131 "174": "Челябинская область (также 74)",
132 "177": "г. Москва (также 77, 97, 99, 197, 199)",
133 "197": "г. Москва (также 77, 97, 99, 177, 199)",
134 "199": "г. Москва (также 77, 97, 99, 177, 197)",
135
136}
137KOD_IFNS = {
138 "01": ["0100", "0101", "0105", "0107"],
139 "02": ["0200", "0256", "0261", "0264", "0267", "0268", "0269", "0272", "0273", "0274", "0276", "0277", "0278",
140 "0280"],
141 "03": ["0300", "0309", "0323", "0326", "0327"],
142 "04": ["0400 "],
143 "05": ["0500", "0506", "0507", "0521", "0523", "0529", "0533", "0542", "0544", "0546", "0547", "0548", "0550",
144 "0554", "0571", "0572", "0573"],
145 "06": ["0600", "0601", "0603", "0608"],
146 "07": ["0700", "0716", "0718", "0720", "0724", "0725", "0726"],
147 "08": ["0800", "0801", "0813", "0816", "0817"],
148 "09": ["0900", "0912", "0916", "0917", "0920"],
149 "10": ["1000", "1001", "1031", "1032", "1035", "1039", "1040"],
150 "11": ["1100", "1101", "1102", "1103", "1105", "1106", "1109", "1121", "1122"],
151 "12": ["1200", "1215", "1218", "1223", "1224", "1225", "1226"],
152 "13": ["1300", "1308", "1310", "1314", "1322", "1323", "1324", "1326", "1327", "1328"],
153 "14": ["1400", "1402", "1426", "1434", "1436", "1445", "1446", "1447", "1448", "1450"],
154 "15": ["1500", "1510", "1511", "1512", "1513", "1514"],
155 "16": ["1600", "1644", "1650", "1651", "1655", "1658", "1673", "1674", "1675", "1677", "1683", "1684", "1685",
156 "1686", "1689", "1690"],
157 "17": ["1700", "1719", "1720", "1721", "1722"],
158 "18": ["1800", "1821", "1828", "1831", "1832", "1836", "1837", "1838", "1839", "1840", "1841"],
159 "19": ["1900", "1901", "1902", "1903"],
160 "20": ["2000", "2031", "2032", "2033", "2034", "2035", "2036"],
161 "21": ["2100", "2124", "2130", "2131", "2132", "2133", "2134", "2135", "2137", "2138"],
162 "22": ["2200", "2201", "2202", "2204", "2207", "2208", "2209", "2210", "2223", "2224", "2225", "2235", "2261"],
163 "23": ["2300", "2301", "2304", "2307", "2308", "2309", "2310", "2311", "2312", "2315", "2348", "2352", "2360",
164 "2361", "2363", "2364", "2365", "2366", "2367", "2368", "2369", "2370", "2371", "2372", "2373", "2375",
165 "2376", "2377"],
166 "24": ["2400", "2411", "2443", "2448", "2450", "2452", "2454", "2455", "2457", "2459", "2460", "2461", "2463",
167 "2464", "2465", "2466", "2468"],
168 "25": ["2500", "2501", "2502", "2503", "2505", "2506", "2507", "2508", "2509", "2510", "2511", "2515", "2533",
169 "2536", "2537", "2540", "2542", "2543"],
170 "26": ["2600", "2625", "2628", "2632", "2634", "2635", "2641", "2643", "2644", "2645", "2646", "2648", "2649",
171 "2650", "2651"],
172 "27": ["2700", "2703", "2705", "2709", "2720", "2721", "2722", "2723", "2724", "2728"],
173 "28": ["2800", "2801", "2804", "2807", "2808", "2813", "2813", "2815", "2827"],
174 "29": ["2900", "2901", "2903", "2904", "2907", "2918", "2920", "2932", "2983"],
175 "30": ["3000", "3015", "3019", "3022", "3023", "3025"],
176 "31": ["3100", "3114", "3116", "3120", "3122", "3123", "3126", "3127", "3128", "3130"],
177 "32": ["3200", "3241", "3245", "3252", "3253", "3256", "3257"],
178 "33": ["3300", "3304", "3316", "3326", "3327", "3328", "3332", "3334", "3339", "3340"],
179 "34": ["3400", "3435", "3443", "3444", "3452", "3453", "3454", "3455", "3456", "3457", "3458", "3459", "3460",
180 "3461"],
181 "35": ["3500", "3525", "3528", "3529", "3532", "3533", "3535", "3536", "3537", "3538"],
182 "36": ["3600", "3601", "3604", "3610", "3620", "3627", "3628", "3629", "3652", "3661", "3662", "3663", "3664",
183 "3665", "3666", "3667", "3668"],
184 "37": ["3700", "3702", "3703", "3704", "3705", "3706", "3711"],
185 "38": ["3800", "3801", "3804", "3805", "3808", "3810", "3811", "3812", "3814", "3816", "3817", "3818", "3827",
186 "3849", "3850", "3851"],
187 "39": ["3900", "3905", "3914", "3917", "3925", "3926"],
188 "40": ["4000", "4001", "4004", "4011", "4023", "4024", "4025", "4027", "4028", "4029"],
189 "41": ["4100", "4101", "4177"],
190 "42": ["4200", "4202", "4205", "4212", "4213", "4214", "4216", "4217", "4222", "4223", "4230", "4246", "4250",
191 "4252", "4253"],
192 "43": ["4300", "4303", "4307", "4312", "4313", "4316", "4321", "4322", "4329", "4330", "4334", "4339", "4345",
193 "4350"],
194 "44": ["4400", "4401", "4436", "4437"],
195 "45": ["4500", "4501", "4502", "4508", "4510", "4524"],
196 "46": ["4600", "4611", "4613", "4614", "4619", "4620", "4623", "4628", "4632", "4633"],
197 "47": ["4700", "4702", "4703", "4704", "4705", "4706", "4707", "4710", "4711", "4712", "4715", "4716", "4725",
198 "4726", "4727"],
199 "48": ["4800", "4802", "4811", "4813", "4816", "4824", "4825", "4827", "4828"],
200 "49": ["4900", "4910", "4911", "4912"],
201 "50": ["5000", "5001", "5003", "5004", "5005", "5007", "5009", "5010", "5011", "5012", "5017", "5018", "5019",
202 "5020", "5022", "5024", "5027", "5029", "5030", "5031", "5032", "5034", "5035", "5038", "5040", "5042",
203 "5043", "5044", "5045", "5047", "5048", "5049", "5050", "5053", "5072", "5074", "5075", "5081"],
204 "51": ["5100", "5102", "5105", "5108", "5110", "5118", "5190"],
205 "52": ["5200", "5222", "5228", "5229", "5235", "5243", "5246", "5247", "5248", "5249", "5250", "5252", "5253",
206 "5254", "5256", "5257", "5258", "5259", "5260", "5261", "5262", "5263", "5275"],
207 "53": ["5300", "5321", "5331", "5332", "5336"],
208 "54": ["5400", "5401", "5402", "5403", "5404", "5405", "5406", "5407", "5410", "5456", "5473", "5474", "5475",
209 "5476", "5483", "5485"],
210 "55": ["5500", "5501", "5503", "5504", "5505", "5506", "5507", "5509", "5514", "5515", "5535", "5543"],
211 "56": ["5600", "5602", "5603", "5607", "5609", "5610", "5611", "5612", "5613", "5614", "5617", "5635", "5636",
212 "5638", "5646", "5658"],
213 "57": ["5700", "5740", "5743", "5744", "5745", "5748", "5749"],
214 "58": ["5800", "5802", "5803", "5805", "5809", "5826", "5827", "5834", "5835", "5836", "5837", "5838"],
215 "59": ["5900", "5901", "5902", "5903", "5904", "5905", "5906", "5907", "5908", "5911", "5916", "5917", "5918",
216 "5919", "5921", "5933", "5948", "5958", "5959", "5981"],
217 "60": ["6000", "6009", "6025", "6027", "6030", "6032"],
218 "61": ["6100", "6154", "6164", "6165", "6171", "6173", "6174", "6181", "6182", "6183", "6186", "6188", "6191",
219 "6192", "6193", "6194", "6195", "6196"],
220 "62": ["6200", "6214", "6215", "6219", "6225", "6226", "6229", "6230", "6232", "6234"],
221 "63": ["6300", "6310", "6311", "6312", "6313", "6316", "6317", "6318", "6319", "6320", "6324", "6325", "6330",
222 "6350", "6372", "6375", "6376", "6377", "6381", "6382"],
223 "64": ["6400", "6413", "6432", "6438", "6439", "6440", "6441", "6444", "6445", "6446", "6447", "6449", "6450",
224 "6451", "6453", "6454", "6455"],
225 "65": ["6500", "6501", "6504", "6507", "6509", "6517"],
226 "66": ["6600", "6612", "6617", "6619", "6623", "6633", "6658", "6670", "6671", "6676", "6677", "6678", "6679",
227 "6680", "6681", "6682", "6683", "6684", "6685", "6686"],
228 "67": ["6700", "6713", "6714", "6722", "6725", "6726", "6727", "6732", "6733"],
229 "68": ["6800", "6820", "6827", "6828", "6829"],
230 "69": ["6900", "6906", "6908", "6910", "6912", "6913", "6914", "6915", "6949", "6950", "6952"],
231 "70": ["7000", "7014", "7017", "7024", "7025", "7026", "7031"],
232 "71": ["7100", "7101", "7104", "7148", "7151", "7153", "7154"],
233 "72": ["7200", "7205", "7206", "7207", "7220", "7224", "7230", "7232"],
234 "73": ["7300", "7303", "7309", "7313", "7321", "7325", "7327", "7328", "7329"],
235 "74": ["7400", "7404", "7413", "7415", "7424", "7430", "7447", "7448", "7449", "7451", "7452", "7453", "7455",
236 "7456", "7457", "7458", "7459", "7460"],
237 "75": ["7500", "7505", "7513", "7524", "7527", "7530", "7536", "7538", "7580"],
238 "76": ["7600", "7602", "7603", "7604", "7606", "7608", "7609", "7610", "7611", "7612", "7627"],
239 "77": ["7700", "7701", "7702", "7703", "7704", "7705", "7706", "7707", "7708", "7709", "7710", "7713", "7714",
240 "7715", "7716", "7717", "7718", "7719", "7720", "7721", "7722", "7723", "7724", "7725", "7726", "7727",
241 "7728", "7729", "7730", "7731", "7733", "7734", "7735", "7736", "7743", "7745", "7746", "7747", "7748",
242 "7750", "7751"],
243 "78": ["7801", "7802", "7804", "7805", "7806", "7807", "7811", "7813", "7814", "7816", "7817", "7819", "7820",
244 "7835", "7838", "7839", "7840", "7841", "7842", "7843", "7848"],
245 "79": ["7900", "7901", "7907"],
246 "80": [],
247 "81": [],
248 "82": [],
249 "83": [],
250 "84": [],
251 "85": [],
252 "86": ["8600", "8601", "8602", "8603", "8606", "8607", "8610", "8611", "8617", "8619", "8622", "8624"],
253 "87": ["8700", "8706", "8709"],
254 "88": [],
255 "89": ["8900", "8901", "8903", "8904", "8905", "8911", "8914"],
256 "90": [],
257 "91": ["9100", "9102", "9103", "9104", "9105", "9106", "9108", "9109", "9110", "9111", "9112"],
258 "92": ["9200", "9201", "9203", "9204"],
259 "93": [],
260 "94": [],
261 "95": [],
262 "96": [],
263 "97": [],
264 "98": [],
265 "99": ["9901", "9971", "9972", "9973", "9974", "9975", "9976", "9977", "9979"],
266}
267db = sqlite3.connect('test_db.sqlite3')
268cursor = db.cursor()
269cursor.execute('''
270 CREATE TABLE IF NOT EXISTS users (
271 type_of_company_region TEXT,
272 company_region TEXT,
273 type_of_company_area TEXT,
274 company_area TEXT,
275 company_address TEXT,
276 company_name TEXT,
277 company_full_name TEXT,
278 company_inn INTEGER UNIQUE,
279 company_kpp INTEGER,
280 company_data_post TEXT,
281 tax_authority_name TEXT,
282 company_ogrn INTEGER,
283 company_date_of_recording TEXT,
284 company_share_capital INTEGER
285)
286''')
287if region in KOD_REG.keys():
288 print(f' Выбран регион: ' + KOD_REG[str(region)])
289 if region in KOD_IFNS.keys():
290 kod_reg = KOD_IFNS[str(region)]
291 for i in kod_reg:
292 start_inn = int(i) * 1000000
293 end_inn = int(start_inn) + 100000
294 while start_inn < end_inn:
295 start_inn += 1
296 if start_inn % 10 == ((2 * (start_inn // 1000000000) + 4 * ((start_inn // 100000000) % 10) + 10 * (
297 (start_inn // 10000000) % 10) + 3 * ((start_inn // 1000000) % 10) + 5 * (
298 (start_inn // 100000) % 10) + 9 * (
299 (start_inn // 10000) % 10) + 4 * ((start_inn // 1000) % 10) + 6 * (
300 (start_inn // 100) % 10) + 8 * ((start_inn // 10) % 10)) % 11) % 10:
301 if len(str(start_inn)) < 10:
302 p = uniform(0, 1)
303 sleep(p)
304 URL = "https://****/search-proc.json"
305 PARAMS = {
306 "page": "1", "pageSize": "10", "pbCaptchaToken": "", "token": "", "mode": "search-all",
307 "queryAll": str(f'0' + str(start_inn))
308 }
309 HEADERS = {
310 "Accept": "application / json, text / javascript, * / *; q = 0.01",
311 "Accept-Encoding": "gzip, deflate, br",
312 "Accept - Language": "ru - RU, ru; q = 0.8, en - US; q = 0.5, en; q = 0.3",
313 "Cache - Control": "max - age = 0",
314 "Connection": "keep - alive",
315 "Content - Length": "532",
316 "Content - Type": "application / x - www - form - urlencoded",
317 "DNT": "1",
318 "Host": "****",
319 "Origin": "https: // ****",
320 "Referer": "https: // **** / search.html",
321 "User-Agent": str(UserAgent().random),
322 "X - Requested - With": "XMLHttpRequest"
323 }
324 response = requests.get(URL, params=PARAMS, headers=HEADERS, proxies=proxy())
325 data = response.json()
326 print(start_inn)
327 try:
328 if response.status_code == 200:
329 YL = data['ul']['data']
330 for info in YL:
331 if 'token' in info.keys():
332 info_token = 'token'
333 URL2 = "https://****company-proc.json"
334 PARAMS2 = {'token': info.get(info_token)}
335 HEADERS2 = {
336 'Accept': '*/*',
337 'Accept-Encoding': 'gzip, deflate, br',
338 'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
339 'Connection': 'keep-alive',
340 'Content-Length': '102',
341 'Content-Type': 'application/x-www-form-urlencoded',
342 'DNT': '1',
343 'Host': '****',
344 'Origin': 'https://****',
345 'Referer': 'https://****/company.html?token=' + str(
346 PARAMS2.values()),
347 'User-Agent': str(UserAgent().random),
348 'X-Requested-With': 'XMLHttpRequest'
349 }
350 response2 = requests.get(URL2, params=PARAMS2, headers=HEADERS2,
351 proxies=proxy())
352 data2 = response2.json()
353 for item in data2.items():
354 if 'vyp' in item:
355 company = item[1]
356 type_of_company_region = company.get('ТипРегион')
357 company_region = company.get('НаимРегион')
358 type_of_company_area = company.get('ТипРайон')
359 company_area = company.get('НаимРайон')
360 company_address = company.get('Адрес')
361 company_name = company.get('НаимЮЛСокр')
362 company_full_name = company.get('НаимЮЛПолн')
363 company_inn = company.get('ИНН')
364 company_kpp = company.get('КПП')
365 company_data_post = company.get('ДатаПостУч')
366 tax_authority_name = company.get('НаимРО')
367 company_ogrn = company.get('ОГРН')
368 company_date_of_recording = company.get('ДатаЗаписи')
369 company_share_capital = company.get('СумКап')
370 cursor.execute(
371 f"INSERT INTO users VALUES ('{type_of_company_region}','{company_region}','{type_of_company_area}','{company_area}','{company_address}','{company_name}','{company_full_name}','{company_inn}','{company_kpp}','{company_data_post}','{tax_authority_name}','{company_ogrn}','{company_date_of_recording}','{company_share_capital}')")
372 db.commit()
373 except response.status_code == 400:
374
375
376 else:
377 print(f'Ошибка доступа ' + str(response.status_code))
378 break
379 else:
380 pass
381
382 else:
383 pass
384
385 print('Ошибка региона')
386else:
387 print('Ошибка')
388
389db.close()
390