У меня есть таблица Google, где строки - это продукты, а столбцы - информация об этих продуктах (материал, цвет, цена, ...).
Эта информация извлекается с помощью функции IMPORTXML с соответствующим запросом xpath. В следующем примере столбец D - это URL-адрес этого продукта. Эти функции извлекают информацию (стекло, цвет и тип) для продукта в строке 3:
=IMPORTXML(D3,"//table[@class='info-table']/tr[th/text()[contains(.,'Glass')]]/td")
=IMPORTXML(D3,"//table[@class='info-table']/tr[th/text()[contains(.,'Color')]]/td")
=IMPORTXML(D3,"//table[@class='info-table']/tr[th/text()[contains(.,'Type')]]/td")
Для каждого продукта извлекается около 10 столбцов и, следовательно, 10 различных функций IMPORTXML для одного и того же URL-адреса.
Он работает правильно, когда продуктов мало, но когда продуктов слишком много, извлекается только некоторая информация, а другие ячейки остаются замороженными со значением «Загрузка ...».
Единственный обходной путь, который я нашел, - это вручную скопировать / вставить полученные значения (Ctrl + C, Ctrl + Maj + v), а затем разблокировать некоторые другие ячейки и начать импорт значений. В конце концов, мне нужно сделать это для всех ячеек, а это занимает много времени.
Например:
=IMPORTXML(D3,"//table[@class='info-table']/tr[th/text()[contains(.,{'Glass', 'Color', 'Type'})]]/td")
Эту проблему можно решить, адаптировав запрос xpath и используя комбинацию различных формул Google Spreadsheet.
Например:
=TRANSPOSE(IMPORTXML(D2,"
(//table[@class='info-table']/tr[th/text()[contains(.,'Diameter')]]/td)[1] |
(//table[@class='info-table']/tr[th/text()[contains(.,'Material')]]/td)[1] |
(//table[@class='info-table']/tr[th/text()[contains(.,'Glass')]]/td)[1] |
(//table[@class='info-table']/tr[th/text()[contains(.,'W/R')]]/td)[1] |
(//table[@class='info-table']/tr[th/text()[contains(.,'Caliber')]]/td)[1] |
(//table[@class='info-table']/tr[th/text()[contains(.,'Type')]]/td)[1]"))
Таким образом, для каждого продукта существует только один importXML.
Эта статья взята из Интернета, укажите источник при перепечатке.
Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.
я говорю два предложения