From 52e4f9fb69e92de8350b7533c76f9210ba97c746 Mon Sep 17 00:00:00 2001 From: David Garcia Alvarez Date: Thu, 13 Jan 2022 16:56:00 +0100 Subject: [PATCH] Added proxy option to Scraper base --- snscrape/base.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/snscrape/base.py b/snscrape/base.py index c1168ac..a79c957 100644 --- a/snscrape/base.py +++ b/snscrape/base.py @@ -139,8 +139,9 @@ class Scraper: name = None - def __init__(self, retries = 3): + def __init__(self, retries = 3, proxies = None): self._retries = retries + self._proxies = proxies self._session = requests.Session() @abc.abstractmethod @@ -161,7 +162,8 @@ class Scraper: def entity(self): return self._get_entity() - def _request(self, method, url, params = None, data = None, headers = None, timeout = 10, responseOkCallback = None, allowRedirects = True): + def _request(self, method, url, params = None, data = None, headers = None, timeout = 10, responseOkCallback = None, allowRedirects = True, proxies = None): + proxies = proxies or self._proxies for attempt in range(self._retries + 1): # The request is newly prepared on each retry because of potential cookie updates. req = self._session.prepare_request(requests.Request(method, url, params = params, data = data, headers = headers)) @@ -170,7 +172,7 @@ class Scraper: if data: logger.debug(f'... with data: {data!r}') try: - r = self._session.send(req, allow_redirects = allowRedirects, timeout = timeout) + r = self._session.send(req, allow_redirects = allowRedirects, timeout = timeout, proxies = proxies) except requests.exceptions.RequestException as exc: if attempt < self._retries: retrying = ', retrying'