Как мне извлечь данные из investing.com ?

#python #web-scraping #python-requests

#python #веб-очистка #python-запросы

Вопрос:

Я хочу получить 5-минутную техническую сводку EUR / USD из https://au.investing.com/currencies/eur-usd , но я понятия не имею, как это сделать. Я попытался использовать модуль запросов, но он сказал, что меня забанили с сайта.

Комментарии:

1. Я знаю, это не ответ на ваш вопрос, но вы думали об использовании Yahoo Finance вместо investing.com ? Он довольно открыт для удаления — pypi.org/project/yahoo-finance

2. @minarth Я бы использовал Yahoo Finance, но у него нет сигналов на покупку или продажу, таких как investing.com 🙁

Ответ №1:

Сервер загружает данные с внешнего URL. Вы можете использовать requests module для его загрузки. Например, для печати свечей / раз:

 import json
import datetime
import requests 
from bs4 import BeautifulSoup


url = 'https://au.investing.com/common/modules/js_instrument_chart/api/data.php?pair_id=1amp;pair_id_for_news=1amp;chart_type=areaamp;pair_interval=300amp;candle_count=120amp;events=yesamp;volume_series=yesamp;period='
headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:81.0) Gecko/20100101 Firefox/81.0',
    'X-Requested-With': 'XMLHttpRequest',
    'Referer': 'https://au.investing.com/currencies/eur-usd'}
data = requests.get(url, headers=headers).json()

# uncomment this to print all data:
# print( json.dumps(data, indent=4) )

for candle in data['candles']:
    t = datetime.datetime.fromtimestamp(candle[0] // 1000)
    print('{!s:<20} {:<10} {:<10} {:<10}'.format(t, *candle[1:]))
  

С принтами:

 2020-10-21 21:40:00  1.1859     123        1004      
2020-10-21 21:45:00  1.1859     184        1127      
2020-10-21 21:50:00  1.1862     173        1311      
2020-10-21 21:55:00  1.186      174        1484      
2020-10-21 22:00:00  1.1863     291        1658      
2020-10-21 22:05:00  1.1864     226        1949      
2020-10-21 22:10:00  1.1863     197        2175      
2020-10-21 22:15:00  1.1863     112        2372      
2020-10-21 22:20:00  1.1863     149        2484      
2020-10-21 22:25:00  1.1862     93         2633      
2020-10-21 22:30:00  1.1863     111        2726      
2020-10-21 22:35:00  1.1861     121        2837      
2020-10-21 22:40:00  1.1862     151        2958      
2020-10-21 22:45:00  1.1861     34         3109      
2020-10-21 22:50:00  1.1861     236        3143      
2020-10-21 22:55:00  1.186      148        3379      
2020-10-21 23:00:00  1.1861     202        3527      
2020-10-21 23:05:00  1.1859     264        3729      
2020-10-21 23:10:00  1.186      162        3993      
2020-10-21 23:15:00  1.1859     223        4155      

...and so on.
  

Комментарии:

1. Спасибо, но я пытаюсь очистить сигналы покупки / продажи с веб-сайта

2. @Andrej Kesely Извините, но как вы это узнали (что URL-адрес «‘https: //au.investing.com/module …»). Как я могу самостоятельно узнать об этом с сайта investing.c * m? Кто-нибудь может помочь? Спасибо,

3. @marcius.tan Вы можете наблюдать за вызовами API на вкладке Инструменты разработчика -> Сеть. Обычно есть все запросы Ajax, которые выполняет страница.