Dataframe 将HTML表放入变量

Dataframe 将HTML表放入变量,dataframe,powershell,web-scraping,Dataframe,Powershell,Web Scraping,我正试图处理来自阿根廷中央银行的公共数据。虽然它没有api,但它允许您在url上迭代,以获得不同货币随时间变化的价值。我已经完成了这项工作,但我相信还有更好的方法 这是我的代码,我需要一种更优雅的方式从html表中捕获数据 $url = "http://www.bcra.gob.ar/PublicacionesEstadisticas/Cotizaciones_por_fecha_2.asp?tipo=E&date2=$($date)" $wc = New-Obje

我正试图处理来自阿根廷中央银行的公共数据。虽然它没有api,但它允许您在url上迭代,以获得不同货币随时间变化的价值。我已经完成了这项工作,但我相信还有更好的方法

这是我的代码,我需要一种更优雅的方式从html表中捕获数据

$url = "http://www.bcra.gob.ar/PublicacionesEstadisticas/Cotizaciones_por_fecha_2.asp?tipo=E&date2=$($date)"

$wc = New-Object System.Net.WebClient
$datos = $wc.DownloadString($url)
            
$html = New-Object -ComObject "HTMLFile"
$html.IHTMLDocument2_write($datos)
$datosCotizacion = $html.all.tags("table") | select outerHTML
            
$html2 = New-Object -ComObject "HTMLFile"
$stringHTML = $datosCotizacion.outerHTML.Replace('<TABLE class="table table-BCRA table-bordered table-responsive" colspan="3">','<TABLE>')
$stringHTML = $stringHTML.Replace(" colSpan=3","")
            
$html2.IHTMLDocument2_write($stringHTML)
            
[xml]$myxml = $html2.getElementsByTagName("table")[0].OuterHTML | out-string
            
$paraCSV = New-Object System.Collections.ArrayList
if($myxml.TABLE.TBODY){
    $myxml.TABLE.TBODY.TR | ForEach-Object($_) { 
                
        $p = $paraCSV.Add((New-Object PSObject -Property @{ Fecha = ""; NombreMoneda = ""; PrecioCompra = ""; PrecioVenta = "" }))
                   
        $paraCSV[$p].Fecha = $date
        $paraCSV[$p].NombreMoneda = $_.TD[0]
        $paraCSV[$p].PrecioCompra = $_.TD[1]
        $paraCSV[$p].PrecioVenta= $_.TD[2]    
    }
} 


$url=”http://www.bcra.gob.ar/PublicacionesEstadisticas/Cotizaciones_por_fecha_2.asp?tipo=E&date2=$($日期)
$wc=新对象System.Net.WebClient
$datos=$wc.DownloadString($url)
$html=新对象-ComObject“HTMLFile”
$html.IHTMLDocument2_write($datos)
$datosCotizacion=$html.all.tags(“表”)|选择outerHTML
$html2=新对象-ComObject“HTMLFile”
$stringHTML=$datosCotizacion.outerHTML.Replace('','')
$stringHTML=$stringHTML.Replace(“colSpan=3”,”)
$html2.IHTMLDocument2_write($stringHTML)
[xml]$myxml=$html2.getElementsByTagName(“表”)[0].OuterHTML |输出字符串
$paraCSV=新对象System.Collections.ArrayList
if($myxml.TABLE.TBODY){
$myxml.TABLE.TBODY.TR | ForEach对象($|){
$p=$paraCSV.Add((新对象PSObject-Property@{Fecha=“”;NombreMoneda=“”;PrecioCompra=“”;PrecioVenta=“”]))
$paraCSV[$p].Fecha=$date
$paraCSV[$p].NombreMoneda=$\.TD[0]
$paraCSV[$p].PrecioCompra=$\uu.TD[1]
$paraCSV[$p].PrecioVenta=$\uu0.TD[2]
}
} 

这是否回答了您的问题?(仅供参考:我刚刚更新了参考问题,以更好地支持
THead
TBody
以及用作表格标题的前导表格行):
”http://www.bcra.gob.ar/PublicacionesEstadisticas/Cotizaciones_por_fecha_2.asp?tipo=E&date2=$($date)“|读取HtmlTable