La tabla de varias páginas de WordPress Tablepress no importa todas las filas

Un usuario Pregunto ✅

Jrussi1301

Necesito importar todas las filas de una página de tablepress (complemento de wordpress), alrededor de 200 filas. La página muestra 30 filas cada vez, pero la URL es la misma, por lo que no se pueden combinar varias fuentes de datos. Power BI Desktop obtiene solo las primeras 30 filas.

La tabla está en la fuente web, todas las filas, pero la presentación es de 30 filas cada vez.

Intenté usar powershell para obtener un archivo .html, pero el análisis se volvió incorrecto (algunos
dentro de las columnas).

¿Alguna pista?

Jrussi1301

En respuesta a Amitchandak

No, no funcionó para nosotros. El punto es que con este complemento de WordPress, la URL no cambia cuando cambia la página. Nuestra solución (después de muchas búsquedas en la web) fue adaptar un script de Powershell que encontramos, para filtrar solo la sección ‘tabla … / tabla’, limpiando sus campos, transformándola en un archivo .CSV. Desafortunadamente No puedo encontrar la URL original, así que aquí está nuestro script, después de las adaptaciones:

$url ="https://some_url/some_page/"

$r=Invoke-WebRequest $url
$r.Content |Out-File C:tempsome_page.html



$Path="C:tempsome_page.html"


[regex]$regex = "(?s)<table id=.*?</table>"
$tables = $regex.matches((GC $Path -raw)).groups.value

ForEach($String in $tables){
$String = $String|ForEach{$_ -replace '(?s)<br.*?</td>','/<td>'}
$table = $String.split("`n")

$CurTable = @()
#$CurTableName = ([regex]'table id="([^"]*)"').matches($table[0]).groups[1].value
$CurTable += ($table[1] -replace "<.th><th class=.*?>",";") -replace "</?(th.*?|b.*?)>"
$CurTable += $table[2..($table.count-2)]|ForEach{$_ -replace '(?s)<br.*?<br' -replace '(?s)<br.*?<','<' -replace "(`r|`n|`t)" -replace "( )+", " " -replace "&nbsp;" -replace "</t(h|d)><t(h|d) class=.*?>",";" -replace "<tr>","`n" -replace "<.?t(d.*?|b.*?|r.*?|h.*?)>" }


$CurTable | convertfrom-csv -Delimiter ";" | export-csv "C:tempsome_page.csv" -notype -Encoding UTF8 -Force 
}

Por supuesto, para cada página diferente, probablemente necesitará cambiar este código.

Amitchandak

@ Jrussi1301, consulte si esto puede ayudar

https://www.myonlinetraininghub.com/scrape-data-multiple-web-pages-power-query

Jrussi1301

En respuesta a Amitchandak

No, no funcionó para nosotros. El punto es que con este complemento de WordPress, la URL no cambia cuando cambia la página. Nuestra solución (después de muchas búsquedas en la web) fue adaptar un script de Powershell que encontramos, para filtrar solo la sección ‘tabla … / tabla’, limpiando sus campos, transformándola en un archivo .CSV. Desafortunadamente No puedo encontrar la URL original, así que aquí está nuestro script, después de las adaptaciones:

$url ="https://some_url/some_page/"

$r=Invoke-WebRequest $url
$r.Content |Out-File C:tempsome_page.html



$Path="C:tempsome_page.html"


[regex]$regex = "(?s)<table id=.*?</table>"
$tables = $regex.matches((GC $Path -raw)).groups.value

ForEach($String in $tables){
$String = $String|ForEach{$_ -replace '(?s)<br.*?</td>','/<td>'}
$table = $String.split("`n")

$CurTable = @()
#$CurTableName = ([regex]'table id="([^"]*)"').matches($table[0]).groups[1].value
$CurTable += ($table[1] -replace "<.th><th class=.*?>",";") -replace "</?(th.*?|b.*?)>"
$CurTable += $table[2..($table.count-2)]|ForEach{$_ -replace '(?s)<br.*?<br' -replace '(?s)<br.*?<','<' -replace "(`r|`n|`t)" -replace "( )+", " " -replace "&nbsp;" -replace "</t(h|d)><t(h|d) class=.*?>",";" -replace "<tr>","`n" -replace "<.?t(d.*?|b.*?|r.*?|h.*?)>" }


$CurTable | convertfrom-csv -Delimiter ";" | export-csv "C:tempsome_page.csv" -notype -Encoding UTF8 -Force 
}

Por supuesto, para cada página diferente, probablemente necesitará cambiar este código.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *