Как получить данные с сайта investing.com
Собираю данные с сайта investing. Вот несколько ссылок
links_for_com = [
'https://www.investing.com/commodities/brent-oil-historical-data',
'https://www.investing.com/commodities/copper-historical-data',
'https://www.investing.com/currencies/xau-usd-historical-data',
'https://www.investing.com/currencies/xag-usd-historical-data',
'https://www.investing.com/crypto/bitcoin/historical-data']
Мой код использует несколько вариантов получения данных с этих сайтов, потому что периодически на разные сайты при обычных get запросах возникает 403 ошибка, тогда приходится использовать selenium.
def open_browser():
options = Options()
options.add_argument("enable-automation")
options.add_argument("--no-sandbox")
options.add_argument("--disable-extensions")
options.add_argument("--dns-prefetch-disable")
options.add_argument("--disable-gpu")
service = Service(executable_path="chromedriver-mac-arm64/chromedriver")
try:
driver = webdriver.Chrome(service=service, options=options)
return driver
except SessionNotCreatedException:
logger.warning("Ошибка создания сессии. Проверьте текущую версию браузера")
return False
def get_html_investing(url, driver):
driver.get(url)
time.sleep(15)
html = driver.page_source
return html, driver
def requests_get(url):
headers = {'user-agent': user_agent}
try:
response = requests.get(url, headers=headers, proxies={'http': "http://" + proxy})
except requests.exceptions.ReadTimeout:
response = requests.get(url, headers=headers, proxies={'http': "http://" + proxy}, timeout=15)
except requests.exceptions.ConnectionError:
response = None
logger.warning(f"Нет доступа к сайту {url}")
return None, ''
if response.status_code == 200:
return response.text, ''
else:
driver = open_browser()
if driver:
return get_html_investing(url, driver)
Но когда запускаю подобный код на облачном сервере, то практически всегда используется selenium для получения данных, на 1 ссылку уходит примерно 1,5 минуты, таких ссылок много, поэтому это занимает много времени.
Каким еще образом можно быстро получить исторические данные с этого сайта?