#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, которые выполняет страница.