у меня есть парсер для циана и яндекс недвижимости, и мне надо сделать так чтобы он не выключался после того как отработал
from time import sleep
import requests
from getDb import check_database
def get_json():
params = (
('roomsTotal', ['1', '2', '3', 'PLUS_4', 'STUDIO']),
('sort', 'DATE_DESC'),
('agents', 'NO'),
('rgid', '566725'),
('type', 'SELL'),
('category', 'APARTMENT'),
('_pageType', 'search'),
('_providers',
['seo', 'queryId', 'forms', 'filters', 'filtersParams', 'direct', 'mapsPromo', 'newbuildingPromo',
'refinements', 'search', 'react-search-data', 'searchHistoryParams', 'searchParams', 'searchPresets',
'serpDirectPicType', 'showSurveyBanner', 'seo-data-offers-count', 'related-newbuildings', 'breadcrumbs',
'ads', 'categoryTotalOffers', 'footer-links', 'site-special-projects']),
('crc', 'y2885b8f687621a9ca16dc212bfe09da7'),
)
proxies = {'http': '37.9.38.240:8000'}
auth = requests.auth.HTTPProxyAuth('Ajbh3a', 'YnUUf1')
response = requests.get('https://realty.yandex.ru/gate/react-page/get/', params=params, proxies=proxies, auth=auth)
data = response.json()
return data
sleep(60)
def get_offer(item):
offer = {}
offer["url"] = item["shareUrl"]
offer["offer_id"] = item["offerId"]
offer_date = ''
if item.get("updateDate"):
offer_date = item["updateDate"].replace('T', ' ').replace('Z', '')
else:
offer_date = item["creationDate"].replace('T', ' ').replace('Z', '')
offer["date"] = offer_date
offer["price"] = item["price"]["value"]
offer["address"] = item["location"]["address"]
offer["area"] = item["area"]["value"]
offer["rooms"] = item["roomsTotalKey"]
offer["floor"] = item["floorsOffered"][0]
offer["total_floor"] = item["floorsTotal"]
return offer
def get_offers(data):
entities = data["response"]["search"]["offers"]["entities"]
for item in entities:
offer = get_offer(item)
check_database(offer)
# break
def main():
data = get_json()
get_offers(data)
sleep(60)
if __name__ == '__main__':
while main(): pass
после того как main отработал, он выключается, как это исправить, запускаю через консоль виндовса.
Ответы (2 шт):
Автор решения: eri
→ Ссылка
if __name__ == '__main__':
while main(): pass
При таком варианте продолжать или нет решает main. Нужно вернуть True чтоб продолжить, например, с проверкой если что-то сломалось:
def main():
try:
....
except:
return False
finaly:
sleep(60)
return True