• Как по нажатию кнопки остановить все демон потоки?

    Ternick
    @Ternick
    1) Проще всего такое провернуть используя библиотеку multiprocessing.
    2) Как-то так:
    code

    import multiprocessing 
    import time 
    
    def func(number): 
    	for i in range(1, 10): 
    		time.sleep(0.01) 
    		print('Processing ' + str(number) + ': prints ' + str(number*i)) 
    
    # list of all processes, so that they can be killed afterwards 
    all_processes = [] 
    
    for i in range(0, 3): 
    	process = multiprocessing.Process(target=func, args=(i,)) 
    	process.start() 
    	all_processes.append(process) 
    
    # kill all processes after 0.03s 
    time.sleep(0.03) 
    for process in all_processes: 
    	process.terminate()


    Если ответ устраивает, отметьте ответ решением :)
    Удачи :)
    Ответ написан
    2 комментария
  • Как по нажатию кнопки остановить все демон потоки?

    LaRN
    @LaRN
    Senior Developer
    Можно использовать библиотеку threading, там есть такая сущность как event. С помощью event можно послать сигнал всем потокам, а потоки получив этот сигнал могут или приостановиться или самоуничтожиться.

    Пример использования есть тут:
    https://www.bogotobogo.com/python/Multithread/pyth...
    Ответ написан
    Комментировать
  • Как сказать python, что полученный текст с сайта нужно читать в формате json?

    NeiroNx
    @NeiroNx
    Программист
    kp_online_req = requests.get("https://market.csgo.com/api/v2/ping?key=" + api).json()
    print(kp_online_req['success'])
    Ответ написан
    Комментировать
  • Как спарсить цену скина в Steam?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    Обязательно нужно в заголовках передавать Accept и Accept-Language(конкретно в данном случае), так как без этих заголовков блок с товарами не возвращается:
    spoiler
    5f1db55c8aa7d080819128.png

    Вот рабочий код, правда без колорамы, думаю разберетесь:
    from bs4 import BeautifulSoup
    import requests
    
    gun_name1 = 'M4A4'
    skin_name1 = 'Безлюдный космос'
    wear_name1 = 'После полевых испытаний'
    headers = {
    
        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
        'Accept-Language': 'ru-UA,ru;q=0.9,en-US;q=0.8,en;q=0.7,ru-RU;q=0.6',
    }
    steam_link = ('https://steamcommunity.com/market/search?appid=730&q=' + gun_name1 +'|' + skin_name1 + '%28' + wear_name1 + '%29')
    full_page = requests.get(steam_link, headers=headers)
    soup = BeautifulSoup(full_page.content, 'html.parser')
    
    skins = soup.find_all('a',class_='market_listing_row_link')
    
    for skin in skins:
    	name = skin.find('span',class_='market_listing_item_name').text
    	counts = skin.find('span',class_='market_listing_num_listings_qty').text
    	price = skin.find('span',class_='sale_price').text.replace('От','').strip() #HACK
    
    
    	print(f'{name}: {counts} - {price}')

    Результат

    M4A4 | Безлюдный космос (После полевых испытаний): 461 - $11.48 USD
    StatTrak™ M4A4 | Безлюдный космос (После полевых испытаний): 44 - $32.53 USD
    M4A4 | Азимов (После полевых испытаний): 52 - $117.83 USD
    M4A4 | Зірка (После полевых испытаний): 172 - $11.86 USD
    M4A4 | Рентген (После полевых испытаний): 82 - $10.78 USD
    M4A4 | Грифон (После полевых испытаний): 264 - $5.10 USD
    M4A4 | Магний (После полевых испытаний): 6,243 - $0.28 USD
    M4A4 | Преобразователь (После полевых испытаний): 434 - $2.01 USD
    M4A4 | Смерч (После полевых испытаний): 154 - $1.90 USD
    M4A4 | Неонуар (После полевых испытаний): 206 - $18.22 USD


    Только обратите внимание, там к скинам несколько цен - цена продажи, обычная цена и т.д. Я в стиме не понимаю.
    И на будущее, всегда проверяйте ответ, который вы получаете в результате запроса. Только не статус-код(200,404 и т.д.), а сохраняйте ответ в файл и смотрите содержимое в блокноте или в браузере. Пример:
    with open('index.html','w') as file:
    	file.write(full_page.text)

    Данный код запишет в файл index.html ответ на ваш запрос.
    Ответ написан
    1 комментарий