Как получить данные с сайта 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 минуты, таких ссылок много, поэтому это занимает много времени.

Каким еще образом можно быстро получить исторические данные с этого сайта?


Ответы (0 шт):