IMPORTXML(インポートエックスエムエル) - Googleスプレッドシート関数

IMPORTXML(インポートエックスエムエル) - Googleスプレッドシート関数

IMPORTXML(インポートエックスエムエル)関数は、XML、HTML、CSV、TSV、RSS フィード、Atom XML フィードなど、さまざまな種類のWEB上のデータからURLを指定してデータをインポートします。

・関数IMPORTXML(読み方:インポートエックスエムエル)
・書式=IMPORTXML(URL,XPathクエリ)
・内容さまざまな種類のデータから文字列をインポートします
URL
検証するページのURL(http://、https://から始まる絶対値)

XPathクエリ
目的のデータを含むアイテムの種類を XPath形式で指定します

このページのstrongタグを呼び出す場合
 "/html/body/div/div/div/strong"

「//」で直前までのパスを省略することができます
 "//strong"

例)このページの"strong"を呼び出す場合
=IMPORTXML("https://google.dw230.com/importxml/","//strong")

例)このページの2番目の"p"タグを呼び出す場合
=IMPORTXML("https://google.dw230.com/importxml/","//p[position()=2]")

例)このページの3番目以降の"p"タグを呼び出す場合
=IMPORTXML("https://google.dw230.com/importxml/","//p[position()>3]")

position()が「=」の場合は省略できます
=IMPORTXML("https://google.dw230.com/importxml/","//p[2]")

対象クエリが見つからない場合「#N/A」エラーを返します

XPath(エックスパス)形式
「パスのような」構文を使用して、XMLドキュメント内のノードを識別およびナビゲートします
対象がHTMLの場合は上から
/html/body/div/div/div/strong
htmlの中のbodyの中のdivの中のdivの中のdivの中のstrongタグ
複数のdivを使ってる場合は指定が面倒です1階層でも間違えば「#N/A」エラーになります
IMPORTXML関数で取得した文字化けする場合

IMPORTXML関数は対象ページがUTF-8以外だと文字化けします

自分で作成したページならばUTF-8に変更すればよいですが、変更できない場合
裏技的な取得方法としては
YAHOOの検索結果にある「キャッシュ」
キャッシュはUTF-8に変換されていますから文字化けせず取得できます

YAHOO検索とbing検索のキャッシュからは取得できますが、Google検索のキャッシュからは「URL を取得できませんでした」とエラーになります
IMPORTXML関数の使用回数の上限

取得中は「loading」が表示されますが「loading」終わらない場合
試しにアクセスログのページからURLをコピーしてタイトルを取得してみたところ
B列にURLを貼り付けた場合
ログが絶対リンクならばセルB2と指定すればよいが
ログが相対リンクの場合はURLの"https://google.dw230.com/"を「&」でつなげます
=IMPORTXML("https://google.dw230.com/"&B2,"//title")

一気に500行くらいコピーしたところエラーのままだったので10行づつくらい試したところ
150~200くらいで下記のエラーになりました

IMPORTXMLエラー
リクエスト数が多いためデータの読み込みに時間がかかる可能性があります。スプレッドシート内で作成した
IMPORTHTML、IMPORTDATA、IMPORTFEED、IMPORTXML 関数の量を減らしてみてください
他のPCでも試したがやはり150~200くらいでエラーになります
別のシートでも50個、50個、50個と3シート目でエラーになります

1時間くらい放置したところほとんど表示されましたがところどころエラーになっています

タイトルだけの取得ならば50個くらい取得したらコピーして値で貼付けしたほうが早く取得できます

IMPORTXMLで普通のホームページから取得できるのは
title、strong、span、h、p、div、などで
meta の description や keywords は取得方法が変わります

meta の descriptionを取得する場合
=IMPORTXML(B2,"//meta[@name='description']/@content")

meta の keywordsを取得する場合
=IMPORTXML(B2,"//meta[@name='keywords']/@content")

a タグは</a>までのテキスト部分を取得します(URLは取得しません
URLを取得する場合は
=IMPORTXML(B2,"//a/@href")

head は構造化データがある場合だけ構造化データの中身を取得します
IMPORTXML関数を使用した関連ページ
WEBサイトからタイトルやキーワード、アイコンを取得
「IMPORTHTML」と「IMPORTXML」の違い
IMPORTXML関数とよく使う関数
 ISURL 指定した値が有効な URL であるかどうかを検証します
 VLOOKUP 特定の値を検索
 SPLIT 区切り文字でセルを分割します
 LEN 文字列の文字数を返します


IMPORTXML(インポートエックスエムエル)>HOME

Googleスプレッドシート関数

ネット上からデータを取得する関数

DETECTLANGUAGE(ディテクトランゲージ) テキストで使用される言語を識別して言語コードを返します

GOOGLETRANSLATE(グーグルトランスレート) 言語コードを指定して表示されている言語を翻訳します

ISURL(イズユーアールエル) 指定した値が有効な URL であるかどうかを検証します

IMAGE(イメージ) セル内に画像のURLを指定することで画像を表示します

IMPORTDATA(インポートデーター) 指定したファイルからタブ区切り、カンマ区切りで文字列を抜き出します

IMPORTFEED(インポートフィード) RSSフィードやAtomフィードをインポートします

IMPORTHTML(インポートHTML) ページのソースからクエリを指定して文字列を抜き出します

IMPORTXML(インポートエックスエムエル) さまざまな種類のデータから文字列をインポートします

(C) 2024 Digital World