我创建了此api,分页如下。它可以正常工作,但是在OFFSET属性中,我需要指定记录的下一个序号的编号,例如第二页的编号251,第二页的下一条记录,等等。 。
我每页的记录限制为250
字段totalItems向我返回了记录总数,例如:4500
我将记录总数除以每页记录总数,以了解我的api有多少页:pageRange = {0..Number.RoundUp(totalItems / 250)}]]] >>
我的代码:
let ufnCallAPI = (offSet) => let query = Web.Contents("https://api.vhsys.com/v2/pedidos?offset=" & Number.ToText(offSet) & "&limit=250", [Headers=[#"access-token"="OCKNYbAMaDgLBZBSQPCOGPWOXGSbdO", #"secret-access-token"="XXXXXXXXXXXXXX"]]), result = Json.Document(query) in result, tmpResult = ufnCallAPI(1), auxTotal1 = Record.ToTable(tmpResult), Value = auxTotal1{2}[Value], auxTotal2 = Value[total], totalItems = auxTotal2 -1, pageRange = {0..Number.RoundUp(totalItems / 250)}, pages =List.Transform(pageRange, each ufnCallAPI(_)), pages2 = Table.FromList(pages, Splitter.SplitByNothing(), null, null, ExtraValues.Error), pages3 = Table.ExpandRecordColumn(pages2, "Column1", {"code", "status", "paging", "data"}, {"Column1.code", "Column1.status", "Column1.paging", "Column1.data"}), pages4 = Table.ExpandListColumn(pages3, "Column1.data"), pages5 = Table.RemoveColumns(pages4,{"Column1.code", "Column1.status", "Column1.paging"}), data = Table.ExpandRecordColumn(pages5, "Column1.data", {"id_ped", "id_pedido", "id_cliente", "nome_cliente", "id_local_retirada", "id_local_cobranca", "vendedor_pedido", "vendedor_pedido_id", "listapreco_produtos", "valor_total_produtos", "desconto_pedido", "desconto_pedido_porc", "peso_total_nota", "peso_total_nota_liq", "frete_pedido", "valor_total_nota", "valor_baseICMS", "valor_ICMS", "valor_baseST", "valor_ST", "valor_IPI", "condicao_pagamento_id", "condicao_pagamento", "frete_por_pedido", "transportadora_pedido", "id_transportadora", "data_pedido", "prazo_entrega", "referencia_pedido", "obs_pedido", "obs_interno_pedido", "status_pedido", "contas_pedido", "comissao_pedido", "estoque_pedido", "ordemc_emitido", "data_cad_pedido", "data_mod_pedido", "id_aplicativo", "id_pedido_aplicativo", "lixeira"}, {"id_ped", "id_pedido", "id_cliente", "nome_cliente", "id_local_retirada", "id_local_cobranca", "vendedor_pedido", "vendedor_pedido_id", "listapreco_produtos", "valor_total_produtos", "desconto_pedido", "desconto_pedido_porc", "peso_total_nota", "peso_total_nota_liq", "frete_pedido", "valor_total_nota", "valor_baseICMS", "valor_ICMS", "valor_baseST", "valor_ST", "valor_IPI", "condicao_pagamento_id", "condicao_pagamento", "frete_por_pedido", "transportadora_pedido", "id_transportadora", "data_pedido", "prazo_entrega", "referencia_pedido", "obs_pedido", "obs_interno_pedido", "status_pedido", "contas_pedido", "comissao_pedido", "estoque_pedido", "ordemc_emitido", "data_cad_pedido", "data_mod_pedido", "id_aplicativo", "id_pedido_aplicativo", "lixeira"}), #"Tipo Alterado" = Table.TransformColumnTypes(data,{{"id_ped", type text}, {"id_pedido", Int64.Type}, {"nome_cliente", type text}, {"valor_total_produtos", type text}}), #"Valor Substituído" = Table.ReplaceValue(#"Tipo Alterado",".",",",Replacer.ReplaceText,{"valor_total_produtos"}), #"Tipo Alterado1" = Table.TransformColumnTypes(#"Valor Substituído",{{"valor_total_produtos", Currency.Type}}), #"Valor Substituído1" = Table.ReplaceValue(#"Tipo Alterado1",".",",",Replacer.ReplaceValue,{"desconto_pedido", "desconto_pedido_porc", "peso_total_nota", "peso_total_nota_liq", "frete_pedido", "valor_total_nota", "valor_baseICMS", "valor_ICMS", "valor_baseST", "valor_ST", "valor_IPI"}), #"Tipo Alterado2" = Table.TransformColumnTypes(#"Valor Substituído1",{{"desconto_pedido", Currency.Type}, {"desconto_pedido_porc", Currency.Type}, {"peso_total_nota", Currency.Type}, {"peso_total_nota_liq", Currency.Type}, {"frete_pedido", Currency.Type}, {"valor_total_nota", type text}, {"valor_baseICMS", Currency.Type}, {"valor_ICMS", Currency.Type}, {"valor_baseST", Currency.Type}, {"valor_ST", Currency.Type}, {"valor_IPI", Currency.Type}, {"prazo_entrega", type text}, {"data_pedido", type date}}), #"Colunas Removidas" = Table.RemoveColumns(#"Tipo Alterado2",{"id_aplicativo", "id_pedido_aplicativo", "lixeira"}), #"Tipo Alterado3" = Table.TransformColumnTypes(#"Colunas Removidas",{{"valor_total_nota", type text}}), #"Valor Substituído2" = Table.ReplaceValue(#"Tipo Alterado3",".",",",Replacer.ReplaceText,{"valor_total_nota"}), #"Tipo Alterado4" = Table.TransformColumnTypes(#"Valor Substituído2",{{"valor_total_nota", Currency.Type}}) in #"Tipo Alterado4"
我需要更改此行,以在项目“ ufnCallAPI(_)”中包含de FOUR / WHILE,:
页面= List.Transform(pageRange,每个ufnCallAPI(_)),
例如,上面的项目:
List.Transform(pageRange, each ufnCallAPI(250)), List.Transform(pageRange, each ufnCallAPI(500)), List.Transform(pageRange, each ufnCallAPI(750)),
总计总数= totalItems
并且包括一个FOR / WHILE来修改我的API,以不传递下一页的编号,而是传递下一个项目的列表的开头的编号开头(偏移)
非常感谢!
我创建了此api,分页如下。它可以正常工作,但是在OFFSET属性中,我需要指定记录的下一个序列号,例如第二个...
如果我正确理解了您的网页抓取问题,那么我建议您不需要申请/ while循环。
[请查看下面的链接,这可能会对您的问题有所帮助。https://www.youtube.com/watch?v=n0bSddoCmss