![Excel を使用したオンライン コミュニティからの XPath データ スクレイピング](https://rvso.com/image/1449105/Excel%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%20%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%E3%81%8B%E3%82%89%E3%81%AE%20XPath%20%E3%83%87%E3%83%BC%E3%82%BF%20%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0.png)
最近これを読んだ記事Excelを使用してInbound.orgコミュニティメンバーのプロフィールをスクレイピングする方法を説明します。ビデオご希望の場合は、こちらをクリックしてください。
このチュートリアルのリリース以降、インバウンド Web サイトの構造が少し変更されました。ビデオの 11:00 分でわかるように、ソーシャル メディア アイコンの XPath をコピーしようとすると、少し異なって表示され、このためその情報を抽出できませんでした。
今私が得たものは次のとおりです:
/html/body/div[3]/div/div/div[1]/div/div[2]/a[1]/i
Excel で構文を記述すると次のようになります。
=XPathOnUrl(A2,"//a[@class='twitter']","href")
そして次のようになります:
=XPathOnUrl(A2,"//a[contains(@class,twitter)]/@href")
さまざまな方法を試しましたが、メンバーのソーシャル メディア プロフィールへのリンクは表示されませんでした。
ページから異なるデータを取得するために、xpath を複数の方法で変更してみましたが、どれもソーシャル メディアの情報ではありませんでした。
=XPathOnUrl(A2,"//*[contains(@class,member-banner-tagline)]/div[2]/div/div/div[1]/div/div[1]")
=XPathOnUrl(A2,"//*[contains(@class,member-banner-tagline)]/div[2]/div/div/div[1]/div/h1")
正直、もう何を試したらいいのかわかりません。何かがおかしいのですが、原因がわかりません。これについて十分な経験のある方、または私の構文の問題を正確に特定できる方はいらっしゃいますか?
どうもありがとう
答え1
Firefox/Firebug によると、ユーザーの Twitter URL への一意の XPath は次のとおりです。
/html/body/div[2]/div/div/div[1]/div/div[2]/a[1]
/i
これは最初の試みとは少し異なります。注意: 最初の試みを修正しました。末尾にを付けないでください。そうしないと、 <a>
URL が付いた ではなく、内部要素が取得されます。
しかし、2 回目の試行では、URL を含む正しい HTML 要素が確実に見つかるため、より堅牢になります。
3 回目の試みは、属性構文をサポートしていないため、Google Docs ImportXML では機能しますが、XPathOnUrl では機能しません。