Здравствуйте, появилась такая проблема, нужно за минуту обработать 10000 предметов в маркете steam. Т.е. я получаю файл с ценами с сайта market.csgo.net и начинаю у каждого названия предмета проверять цену уже в steam маркете. Вот на этом этапе 2-3 товара выдают код 200, остальные 429. Я решил делать череп прокси, но ничего не поменялось, при этом прокси работают точно. После подключил User-Agent, но тоже нет результата. Чтобы обработать столько запросов использую библиотеку threading. Если же делать без неё то скрипт работает более 5 часов, но успешно
Код:
import re
import requests
import json
from bs4 import BeautifulSoup
from pycbrf.toolbox import ExchangeRates
import random
from threading import Thread
import time
from fake_headers import Headers
rates = ExchangeRates()
val = float(rates['TRY'].rate)
def listing(i, items, proxies_list, val):
stop = False
while not stop:
item = items[i]["market_hash_name"]
price_tl = round(float(items[i]["price"]) / val, 2)
headers = Headers(os="win", headers=True).generate()
k=1
while k==1:
try:
proxies = {
'http': random.choice(proxies_list)
}
test = requests.get("http://ifconfig.me/ip", headers=headers, proxies=proxies, timeout=5).text
if test != "":
k=2
except:
k=1
full_page = requests.get(f"https://steamcommunity.com/market/listings/570/{item}", headers=headers, proxies=proxies)
print(full_page.status_code)
result = re.findall(r'Market_LoadOrderSpread\(\s*(\d+)\s*\)', str(full_page.content))
print(item)
if result != []:
parse = requests.get(f"https://steamcommunity.com/market/itemordershistogram?country=TL&language=english¤cy=17&item_nameid={result[0]}&two_factor=0", headers=headers, proxies=proxies)
res = json.loads(parse.content)
buy_order_graph = res["buy_order_graph"]
if buy_order_graph == []:
print("Skip...")
break
sell = buy_order_graph[0]
buy = res["sell_order_graph"][0][0]
soup = BeautifulSoup(full_page.text, 'lxml')
name = str(soup.find_all('title')[0]).replace("</title>", "").split("for ")[1]
print(sell[0] - price_tl)
if sell[0] - price_tl > 10:
text = f"""AHTUNG!!!
Название товара: {name}
Цена автопродажи: {sell[0]} TL
Минимальная цена у продавцов: {buy} TL
Количество покупателей: {sell[1]}
Цена на маркете: {float(items[i]["price"])}
Выгода: {sell[0] - price_tl}"""
print(text)
stop = True
proxies_list = []
f = open('proxy-scraper-master\\output.txt', 'r')
for line in f:
proxies_list += [line.replace("\n", "")]
items = json.loads(requests.get("https://market.dota2.net/api/v2/prices/RUB.json").content)["items"]
for i in range(len(items)):
Thread(target=listing, args=(i, items, proxies_list, val)).start()
time.sleep(10)