Я пытаюсь получить исторические данные c календаря с этого сайта - https://www.investing.com/economic-calendar/ за следующие даты (с 1 февраля 2020 года по 5 февраля 2020 года).
Сегодня 4 февраля 2020 года.
Если я использую URL-адрес https://www.investing.com/economic-calendar/ ниже, я могу извлечь таблицу с помощью Beautifulsoup, но не могу выбрать любой день, кроме текущего. Я получаю таблицу, сохраненную в моем сценарии python для (4 февраля 2020 года), который сегодня.
import requests
import pandas as pd
from bs4 import BeautifulSoup
payload = {"country[]":["25","32","6","37","72","22","17","39","14","10","35","43","56","36","110","11","26","12","4","5"],
"dateFrom":"2020-02-01",
"dateTo":"2020-02-05",
"timeZone":"8",
"timeFilter":"timeRemain",
"currentTab":"custom",
"limit_from":"0"}
urlheader = {
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36",
"X-Requested-With": "XMLHttpRequest"
}
url = "https://www.investing.com/economic-calendar/"
req = requests.post(url, data=payload, headers=urlheader)
print(req)
soup = BeautifulSoup(req.content, "lxml")
table = soup.find('table', id="economicCalendarData")
Переменная таблицы выглядит следующим образом
Я вижу, что он отправляет почтовый запрос на "https://www.investing.com/economic-calendar/Service/getCalendarFilteredData" всякий раз, когда я изменяю диапазон дат или настройки фильтра.
Вот данные запроса, которые я нашел.
Вот ссылка POST
Поэтому вместо этого я использую следующий код , так как я хочу выбрать даты.
import requests
import pandas as pd
from bs4 import BeautifulSoup
payload = {"country[]":["25","32","6","37","72","22","17","39","14","10","35","43","56","36","110","11","26","12","4","5"],
"dateFrom":"2020-02-01",
"dateTo":"2020-02-05",
"timeZone":"8",
"timeFilter":"timeRemain",
"currentTab":"custom",
"limit_from":"0"}
urlheader = {
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36",
"X-Requested-With": "XMLHttpRequest"
}
url = "https://www.investing.com/economic-calendar/Service/getCalendarFilteredData"
req = requests.post(url, data=payload, headers=urlheader)
print(req)
soup = BeautifulSoup(req.content, "lxml")
table = soup.find('table', id="economicCalendarData")
Но на этот раз не используется financialCalendarData, поэтому переменная таблицы выходит пустой. Переменная супа содержит данные, но в ней нет данных таблицы.
Это таблица, которую я пытаюсь сохранить.
Как я уже говорил ранее, если я использую URL в качестве https://www.investing.com/economic-calendar/, я могу получить данные таблицы только за текущий день (4 февраля 2020 года); независимо от того, какие даты я ввожу в полезную нагрузку (dateFrom, dateTo).
По какой-то причине таблица появляется пустой, когда я пытаюсь опубликовать вместо нее https://www.investing.com/economic-calendar/Service/getCalendarFilteredData, хотя Переменная супа содержит данные, это не те данные, которые я запрашиваю. Что я делаю неправильно? Как сохранить таблицы на выбранные даты?