Таким образом, каждый второй я делаю кучу запросов к веб-X каждую секунду, как сейчас со стандартными urllib
пакетами, как это (в requestreturns JSon):Повторное использование соединения HTTP Python 3
import urllib.request
import threading, time
def makerequests():
request = urllib.request.Request('http://www.X.com/Y')
while True:
time.sleep(0.2)
response = urllib.request.urlopen(request)
data = json.loads(response.read().decode('utf-8'))
for i in range(4):
t = threading.Thread(target=makerequests)
t.start()
Однако, поскольку я делаю так много запросов после 500 запросов, сайт возвращает HTTPError 429: Too manyrequests
. Я думал, что это может помочь, если я повторно использую исходное TCP-соединение, однако я заметил, что это невозможно сделать с помощью пакетов urllib
.
Так что я сделал некоторые погуглите и обнаружил, что следующие пакеты могут помочь:
Requests
http.client
socket
?
У меня есть вопрос: какой из них лучше всего подходит для моей ситуации, и может ли кто-нибудь показать пример одного из них (для Python 3)?
Чтобы ответить на ваш вопрос, '' запрос' (вероятно) лучший - он обрабатывает автоматически. Однако на самом деле может помочь уменьшить количество запросов. – mhawke
Если веб-сайт является запросом на ограничение скорости, повторное использование подключения tcp, вероятно, не будет работать. – Alasdair
Я предполагаю, что администратор веб-сайта знает, что вы делаете и почему. Если цикл не повторяется, то один и тот же запрос можно рассматривать как атаку, а IP-адрес заканчивается черным списком. –