Investing.com 使用 Powershell 抓取历史数据

Investing.com scrape historical data with Powershell

我受到 python 模块 investpy 中答案 and the function get_stock_historical_data 的启发,在 Powershell 中编写了一个函数,该函数检索股票在两个日期:

$uri = 'https://www.investing.com/instruments/HistoricalDataAjax'

$params = @{
    'curr_id'= '951481'
    'smlID'= '2081817'
    'header'= 'STOXX 50 Volatility VSTOXX EUR Historical Data'
    'st_date'= '04/13/2021'
    'end_date'= '04/13/2002'
    'interval_sec'= 'Daily'
    'sort_col'= 'date'
    'sort_ord'= 'DESC'
    'action'= 'historical_data'
}

$headers = @{
    'User-Agent' = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0'
    'X-Requested-With'= 'XMLHttpRequest'
    'Accept'= 'text/html'
    'Accept-Encoding'= 'gzip, deflate'}

$res = Invoke-WebRequest -Method POST -Headers $headers  -Uri $uri -Body $params -ContentType application/x-www-form-urlencoded
$res.Content > .\test.txt

我的问题是响应包含

<td colspan="7" class="arial_11 blueFont center">No results found</td>

但它应该return一年内所有股票的价格

有关信息,当我直接从投资发送它并检查页面时,我得到:

感谢您的帮助!

此特定示例中的问题是开始日期 ('st_date'='04/13/2021') 是结束日期 ('end_date'='04/13/2002') 之后的日期。因此,该请求基本上是针对 2021 年之后但 2002 年之前的数据,这不太合理。

在这种情况下,将后者更改为 04/13/2021 之后的任何日期应该可以解决问题。