Web Scraping 不适用于网格布局
Web Scraping not working with grid layout
我想提取可从以下网站获得的 table,但我无法使用 excel 中的获取数据选项执行此操作。
有没有其他方法可以将直播 table 删除到我的 excel?
可能的解决方法:
使用“数据 > 获取和转换 > 从 Web”直接加载包含数据(每个请求最多 50 个结果)的 .json。
然后,使用 PowerQuery,取消嵌套并 select 感兴趣的变量。
使用以下内容进行测试。json(使用浏览器开发工具检查网络请求):
示例:
输出:
编辑:PowerQuery 代码:
let
Source = Json.Document(Web.Contents("https://portal.emsa.europa.eu/o/portlet-public/rest/detention/getCurrentDetentions.json?_dc=1653155551216&page=1&start=0&limit=20")),
results = Source[results],
#"Converti en table" = Table.FromList(results, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Column1 développé" = Table.ExpandRecordColumn(#"Converti en table", "Column1", {"id", "imoNumber", "shipName", "shipType", "detentionDate", "detentionPort", "detentionReportingAuthority", "flag"}, {"Column1.id", "Column1.imoNumber", "Column1.shipName", "Column1.shipType", "Column1.detentionDate", "Column1.detentionPort", "Column1.detentionReportingAuthority", "Column1.flag"}),
#"Column1.shipType développé" = Table.ExpandRecordColumn(#"Column1 développé", "Column1.shipType", {"description"}, {"Column1.shipType.description"}),
#"Column1.detentionPort développé" = Table.ExpandRecordColumn(#"Column1.shipType développé", "Column1.detentionPort", {"name", "country"}, {"Column1.detentionPort.name", "Column1.detentionPort.country"}),
#"Column1.detentionPort.country développé" = Table.ExpandRecordColumn(#"Column1.detentionPort développé", "Column1.detentionPort.country", {"description"}, {"Column1.detentionPort.country.description"}),
#"Column1.flag développé" = Table.ExpandRecordColumn(#"Column1.detentionPort.country développé", "Column1.flag", {"description"}, {"Column1.flag.description"}),
#"Colonnes permutées" = Table.ReorderColumns(#"Column1.flag développé",{"Column1.id", "Column1.imoNumber", "Column1.shipName", "Column1.flag.description", "Column1.shipType.description", "Column1.detentionDate", "Column1.detentionPort.name", "Column1.detentionPort.country.description", "Column1.detentionReportingAuthority"}),
#"Colonnes supprimées" = Table.RemoveColumns(#"Colonnes permutées",{"Column1.id", "Column1.detentionReportingAuthority"})
in
#"Colonnes supprimées"
我想提取可从以下网站获得的 table,但我无法使用 excel 中的获取数据选项执行此操作。
有没有其他方法可以将直播 table 删除到我的 excel?
可能的解决方法:
使用“数据 > 获取和转换 > 从 Web”直接加载包含数据(每个请求最多 50 个结果)的 .json。
然后,使用 PowerQuery,取消嵌套并 select 感兴趣的变量。
使用以下内容进行测试。json(使用浏览器开发工具检查网络请求):
示例:
输出:
编辑:PowerQuery 代码:
let
Source = Json.Document(Web.Contents("https://portal.emsa.europa.eu/o/portlet-public/rest/detention/getCurrentDetentions.json?_dc=1653155551216&page=1&start=0&limit=20")),
results = Source[results],
#"Converti en table" = Table.FromList(results, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Column1 développé" = Table.ExpandRecordColumn(#"Converti en table", "Column1", {"id", "imoNumber", "shipName", "shipType", "detentionDate", "detentionPort", "detentionReportingAuthority", "flag"}, {"Column1.id", "Column1.imoNumber", "Column1.shipName", "Column1.shipType", "Column1.detentionDate", "Column1.detentionPort", "Column1.detentionReportingAuthority", "Column1.flag"}),
#"Column1.shipType développé" = Table.ExpandRecordColumn(#"Column1 développé", "Column1.shipType", {"description"}, {"Column1.shipType.description"}),
#"Column1.detentionPort développé" = Table.ExpandRecordColumn(#"Column1.shipType développé", "Column1.detentionPort", {"name", "country"}, {"Column1.detentionPort.name", "Column1.detentionPort.country"}),
#"Column1.detentionPort.country développé" = Table.ExpandRecordColumn(#"Column1.detentionPort développé", "Column1.detentionPort.country", {"description"}, {"Column1.detentionPort.country.description"}),
#"Column1.flag développé" = Table.ExpandRecordColumn(#"Column1.detentionPort.country développé", "Column1.flag", {"description"}, {"Column1.flag.description"}),
#"Colonnes permutées" = Table.ReorderColumns(#"Column1.flag développé",{"Column1.id", "Column1.imoNumber", "Column1.shipName", "Column1.flag.description", "Column1.shipType.description", "Column1.detentionDate", "Column1.detentionPort.name", "Column1.detentionPort.country.description", "Column1.detentionReportingAuthority"}),
#"Colonnes supprimées" = Table.RemoveColumns(#"Colonnes permutées",{"Column1.id", "Column1.detentionReportingAuthority"})
in
#"Colonnes supprimées"