スクレイピングで「住所・電話番号・企業名」を抽出して、CSV(テーブル)を作りたいのですが。。。


お世話になります。
大学の卒論用に企業データを集めています。
WEBサイトをクローリングしてデータを集めていますが、うまくいかず、アドバイスを頂けたらと思っております。

・条件
WEBサイトは数多くあるため、汎用性のある抽出方法にしたい(HTML構造に影響されない)
WEBサイトには、企業情報が一覧で並んでいる(例えば商工会の企業一覧など)

・参考サイト
https://www.chusho.meti.go.jp/soudan/ken_shokokai.html
https://www.info.city.tsu.mie.jp/www/sp/contents/1001000010307/index.html

上記のようなサイトをクローリングして住所、電話番号、企業名のテーブルを作りたいです。
WEBサイトが少数であれば、サイトごとにHTMLを解析してスクレイピングすべきだと思います。
ただWEBサイトの数が多い物で・・・
汎用的に「住所、電話番号、企業名」のセットをデータ化(CSV)できる仕組みを作りたいと思っています。

何かヒントやアドバイスがあれば、教えていただければ幸いです。
どうぞよろしくお願い致します。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:
  • 終了:2022/10/01 14:00:10

ベストアンサー

id:noume No.1

回答回数1ベストアンサー獲得回数1

今回の収集対象の特徴から、正規表現でパターンマッチを行うといいのではないでしょうか。特に電話番号はマッチ条件を作りやすいので(ググればパターンも出てくるでしょう)、これを糸口にするといいかもしれません。収集要素がテーブルなどの一定の構造に収まっているなら、なおやりやすいですね。環境がわからないのでコード例示は行いませんが、プロセスとしては以下のようになるのではないでしょうか。

  1. 電話番号を含むパターンマッチをページ全体にかける
  2. マッチした要素の親へアクセスし、子のinnerHTMLを全て取得する
  3. 取得した内容全体に正規表現で住所・電話番号・企業名のマッチを試し、それぞれヒットしたものを指定の変数へ格納
  4. 出力用にフォーマットを整え書き出し

あとはトライエラーでマッチングパターンを改造し、ノイズを減らしていくだけかと思います。

id:nsys

回答ありがとうございました!

何となくですが方向性が見えてきました。

2022/10/03 07:57:43

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません