このページでは企業リスト収集をするために必要なスクレイピングのやり方を解説いたします。
必要なものはスプレッドシートのみです。
重要な関数
=IMPORTXML
参考:【スクレイピング】IMPORTXML関数の使い方や具体的な使用方法を解説!
IMPORTXML関数は、サイトから必要な情報を指定し、その部分の情報をスプレッドシートに出力できるような関数です。
記述の仕方は
IMPORTXML(URL,”XPathクエリ”)
↓このまま使えます。↓
=IMPORTXML(セル番号,"XPathクエリ")
XPathとは
XPath(エックスパス)についてですが、マークアップ言語XMLに準拠した文書の特定の部分を指定する言語です。
これは言葉では理解が難しいと思うので、「そういうものがあるんだな」くらいで大丈夫です。
XPathの取得の仕方
Chromeブラウザ起動中、F12(ファンクション12)でデベロッパーツールを開き抽出したいところを選択
macだと command+option+I と3キー
macでもデベロッパツールをF12キーで開きたい | blog | HB_sai blog
デベロッパーツール上で
右クリック→copy→copy XPath
=IMPORTXML(URL,XPathクエリ)で
=IMPORTXML(URL,取得したXPathクエリ)とする
これで、関数の入力ができましたが出力結果は「エラー」。
問題があるのはXPathの部分です。
エラーにならないやり方
先ほど、ダブルクォーテーションで囲むということをお伝えしましたが、それだけではダメでした。
なぜなら、「[@id=”js-aaOpData_Listing_1″]」の「”js-aaOpData_Listing_1″」の部分をダブルクォーテーションで囲っているからです。
本来ならば、XPathすべてをダブルクォーテーションで囲む必要があったのですが、XPath内にダブルクォーテーションが使われていて、途中でXPathが途切れるという判定になってしまいます。
なので、この場合は「”js-aaOpData_Listing_1″」のダブルクォーテーションをシングルクォーテーション「’」に変えてあげましょう。
そうすると解決いたします。
もう一つのエラーにならないやり方(※こっちが重要)
先程のXPathですが、ダブルクォーテーションをシングルクォーテーションに直さないやり方がございます。
XPath
//*[@id=”js-aaOpData_Listing_1″]/ul/li[1]/h3/a/span
はこの抽出したい場所を表しています。
これを分解すると
//(このページから)*[@id=”js-aaOpData_Listing_1″](IDで指定されている)/ul(リストの中で)/li[1](1番目の)/h3(h3タグである)/a(aタグの)/span(spanタグの場所)
このページからIDで指定されているリストの中で1番目のh3タグであるaタグのspanタグの場所
となります。
このXPathはIMPORTXMLで記載する際は省略可能なので、
このページからIDで指定されているリストの中で1番目のh3タグであるaタグのspanタグの場所
↓省略して
このページからh3タグであるaタグのspanタグの場所
という形つまり
//h3/a/span
でもスクレイピングをすることが可能です。
=IMPORTXML(A1,"//h3/a/span")
もっとかんたんに言うと
「//」スラッシュ2ついれて、ほしいデータの場所の後ろを引っ張ってくれば良いと覚えればOKです。
複数のURLをまたがって収集するやり方
複数のURLの場合はURLの規則性を見つけましょう
バイトルの場合はページネーションがありpage2page3でつながっています。
ただし
IMPORTXMLは下のセルへ抽出していくのでこのやり方だと下のセルに重なるところは表示されません。
対処法として、URLを転置しましょう。
URLの規則性が複雑な場合
バイトルみたいに
https://www.baitoru.com/kanto/jlist/tokyo/23ku/shinjukuku/ https://www.baitoru.com/kanto/jlist/tokyo/23ku/shinjukuku/page2 https://www.baitoru.com/kanto/jlist/tokyo/23ku/shinjukuku/page3
と規則性があれば良いですが、
ゼクシィみたいに
https://zexy.net/wedding/clientList/?pn=1&bg=&area=0648&area=0649&area=0650&area=0651&area=0652
https://zexy.net/wedding/clientList/?pn=2&bg=&area=0648&area=0649&area=0650&area=0651&area=0652
https://zexy.net/wedding/clientList/?pn=3&bg=&area=0648&area=0649&area=0650&area=0651&area=0652
とURLの途中でページの割番が振られております。
この際は他の関数を組み合わせましょう
URLを規則性があるところで区切る
セルでURLをふやす
区切ったところを邪魔にならない部分に置く
増やす
=A1&A2
で区切ったURLをくっつける
隣のセルも同様にくっつけてゆく
=IMPORTXML
でスクレイピング
完了
ページが1ページの場合(アドオンを使ったやり方)
アドオン
https://chrome.google.com/webstore/detail/scraper/mbigbapnjcgaffohmbkdlecaccepngjd
やり方
https://qiita.com/ka-ko/items/2ef0c6870bb8a174f35f
まとめ
=IMPORTXML(セル番号,"XPathクエリ")
↑これを使う
デベロッパーツール上で
右クリック→copy→copy XPath
=IMPORTXML(セル番号,"XPathクエリ")
の中に入れるxpathは
「//」スラッシュ2ついれて、ほしいデータの場所の後ろを引っ張ってくれば良い
エラーがおおいばあい
https://google.dw230.com/importxml/
入れ替わったものから順に
関数を抜いた数字だけに置き換えてください。