Powerquery webscraping: добавление нескольких столбцов без запроса одной и той же веб-страницы заново для каждого столбца - PullRequest
0 голосов
/ 25 марта 2020

Моя базовая таблица содержит ссылки на подстраницы одного и того же веб-сайта, и я хочу добавить несколько столбцов с очищенными значениями. Функция Table.AddColumn() обеспечивает соответствующую ссылку с помощью своей функции итератора, и самым простым способом было бы запросить веб-сайт, выбрать значение и добавить его в новый столбец, что довольно неэффективно, поскольку точно такой же список веб-запросов будет быть сделанным для каждого нового столбца.

Следующим лучшим решением будет добавить только один столбец, объединить все соответствующие значения в строку перед передачей их для добавления и, наконец, разбить столбец строки на несколько столбцов. Это работает, но не кажется мне намеченным способом.

Есть ли лучшее решение, которое по-прежнему не запрашивает какую-либо страницу более одного раза?

Спасибо за все ответы

1 Ответ

0 голосов
/ 26 марта 2020

Из того, что я понял, каждая строка в вашей таблице представляет URL, и вы хотите запросить каждый URL только один раз.

  1. Создайте столбец, используя Table.AddColumn, в котором вы запрашиваете только страницы, но на самом деле ничего не делать с ответом еще. (Таким образом, этот новый добавленный столбец будет содержать только ответ сервера.)

  2. Затем начните добавлять остальные столбцы (с Table.AddColumn) с их соответствующими логами c, как вы это сделали раньше - кроме как теперь, вместо того, чтобы снова запрашивать страницу, вы можете сослаться на столбец, созданный на шаге 1, поскольку этот столбец содержит ответ, который вы получите, если запросите его снова.

  3. Вы можете удалить столбец из шага 1 (используя Table.RemoveColumns), как только он вам больше не нужен.

Я думаю, что ваша проблема была связана с областью действия. Вы запрашивали и извлекали в той же функции и возвращали только извлеченное значение (то есть ответ вышел из области действия после завершения функции, то есть вам нужно будет запросить ответ снова, если вы захотите снова поработать с ним - что вы сделал).

Я бы дал вам пример кода, но вы не включили ни одного кода в свой вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...