【发布时间】:2021-08-24 19:45:46
【问题描述】:
我有一个脚本试图从网站上抓取数据。该网站在收到约 75 个请求后会阻止任何传入请求。我发现在 50 个请求后重置会话并休眠 30 秒似乎可以解决被阻塞的问题。现在我想继承 requests.Session 并按顺序修改它的行为,以便它在需要时自动重置会话。到目前为止,这是我的代码:
class Session(requests.Session):
request_count_limit = 50
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.request_count = 0
def get(self, url, **kwargs):
if self.request_count == self.request_count_limit:
self = Session.restart_session()
response = super().get(url, **kwargs)
self.request_count += 1
return response
@classmethod
def restart_session(cls):
print('Restarting Session, Sleeping For 20 seconds...')
time.sleep(20)
return cls()
但是,上面的代码不起作用。原因是虽然我重新分配了 self 对象本身并没有改变,因此 request_count 也没有改变。任何帮助将不胜感激
【问题讨论】:
标签: python oop python-requests