Dataframe 将HTML表放入变量
我正试图处理来自阿根廷中央银行的公共数据。虽然它没有api,但它允许您在url上迭代,以获得不同货币随时间变化的价值。我已经完成了这项工作,但我相信还有更好的方法 这是我的代码,我需要一种更优雅的方式从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
$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