import requests import json import time import csv import pyproj from random import choice from random import randint from pandas import read_csv def get_proxy(): headers = {'User-Agent':'Mozilla/5.0 (Windows NT 8; WOW32; rv:54.0) Gecko/20100101 Firefox/54.0'} proxies = open('proxy.txt').read().split('\n') result=None proxy="" while result is None: try: proxy = {'http':'http://'+choice(proxies)} r = requests.get('http://ya.ru',headers=headers, proxies=proxy,timeout=(60, 60)) if r.status_code==200: result=proxy except: pass return proxy def main(): headers = { 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'Accept-Encoding':'gzip, deflate', 'Accept-Language':'ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4', 'Cache-Control':'max-age=0', 'Connection':'keep-alive', 'Cookie':'_ym_uid=1495451406361935235; _ym_isad=1; topCities=43-2; _2gis_webapi_session=0faa6497-0004-47c5-86d8-3bf9677f972a; _2gis_webapi_user=7e256d33-4c6e-44ab-a219-efc71e2d330f', 'DNT':'1', 'Host':'catalog.api.2gis.ru', 'Upgrade-Insecure-Requests':'1', 'User-Agent':'Mozilla/5.0 (Windows NT 7; WOW32; rv:54.0) Gecko/20100101 Firefox/54.0', 'X-Compress':'null' } print("start") csvfile = open('GetShopsByCoordinats.csv', 'a', newline='') fieldnames = ['id', 'x','y','shops','names'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames, delimiter=';', quotechar='|',) writer.writeheader() inputCSV = read_csv('for2GIS.csv', sep=';', skiprows=[0], header=None) for i in range (0,5): s= 'point='+str(inputCSV[1][i])+'%2C'+str(inputCSV[2][i])+'&fields=search_attributes%2Citems.links&key=rutnpt3272' print (s) with requests.Session() as session: r=session.get('https://catalog.api.2gis.ru/2.0/geo/search?'+s, headers=headers,timeout=(60, 60)) JsonData = r.json() try: print(JsonData['result']['items'][0]['links']['branches']['count']) writer.writerow({'id': str(inputCSV[0][i]),'x': str(inputCSV[1][i]), 'y': str(inputCSV[2][i]), 'shops': JsonData['result']['items'][0]['links']['branches']['count'] }) except: writer.writerow({'id': str(inputCSV[0][i]),'x': str(inputCSV[1][i]), 'y': str(inputCSV[2][i]), 'shops': 'none' }) time.sleep(randint(1,3)) csvfile.close() print ('fin') if __name__=='__main__': main()