⚪︎実現したいこと
営業リスト作りを自動化するシステムを開発したいと考えています。
現在は企業の電話番号が載っているwebサイトを見て、企業名とその電話番号をエクセルに手入力してリスト作りをしています。
非常に手間なのでこの作業を自動化するシステムを作りたいです。
⚪︎前提
自分のプログラミング経験は
・HTMLで簡単なホームページを作った事がある。
・テックカンパニーでruby on railsを使ってwebサービスを作るという講義を受講しツイッターのクローンを作った事がある。
と言う状態です。プログラミング環境の構築はできています。
上記実現したいことを実現さするにあたって何から手を付けたらいいか全くわからないです。
・お聞きしたいこと
学ぶべき言語
学ぶべき領域、考え方
これを実現するにあたって参考になる書籍
です。
よろしくお願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
学ぶべき領域、考え方
やろうとしていることはスクレイピングです。
概要はRuby + Nokogiriでスクレイピング - Qiita等の記事を参照してください。
学ぶべき言語
Ruby、Python、Node.js、PHP辺りが無難でどれでも構いません。
得意な物を選んでください。
多少心得のあるRubyがオススメでしょう。
何故Rubyというかスクリプト言語を推すかの理由ですが、
Webサイトの元になるのはHTMLです。
HTMLってのは多少ルールが風変わりなだけで文字列です。
上記上げた世の中のスクリプト言語の有名所は大抵この文字列の変換が得意です。
作業によって言語により多少得意不得意はあるものの、
プログラムを構築する人の言語の得意不得意で簡単に覆る程度の差しかありません。
さて、実際に何をやるかに移りましょう。
ざっくりと考えますが、大まかに分けて以下の3章立てになるでしょう
- URLから企業名を抽出する
- URLから電話番号を抽出する
- どうやってエクセルに反映するか
まず、企業名ってどうやって抽出するかですが、
これは基本的にトップページのhead > title要素内に格納されている事が多いです。
teratailのトップページも<title>teratail【テラテイル】|思考するエンジニアのためのQAプラットフォーム</title>
という文字列が見えますね。
多少のノイズは後でエディターを使って一気に修正すれば5分で終わるので、今回は我慢してください。
次にURLから電話番号を抽出する方法ですが、
HTMLファイル全体を正規表現で全文検索してください。
電話番号は0から始まる10~11桁の数字(最初の0は国内コード)ですが、ハイフンで区切られる事もあります。
/[0-9\-]{10,13}/
という正規表現を使って抜き出せばまぁまぁいい感じに電話番号らしき数字列を抜き出せるのではないでしょうか?
最後に抜き出した情報とExcelとの連携ですが、
プログラミング言語でExcelファイルを読み書きするのは絶対に避けろと言われる程、困難かつまともに動かない負けフラグです。
そこで完全自動化ではないものの、Excelに反映しやすいTSVファイルを生成しましょう。
兄弟の様式にCSVファイルがあり、
こちらは非エンジニアの方もExcel連携に使われる様式なので聞き覚えがあるかもしれません。
Excelは次の行の入力にはEnter(改行)を利用しますが次の列の入力にはTabを利用します。
これはクリップボードからの貼付けでも同様で、
複数行のテキストを貼り付けた場合、複数行にまたがって上書きしながらデータを入力することが可能です。
この時に、1行の中にTabの文字列が含まれている場合、なんと次の列にデータを格納することが出来ます。
従って、タブと改行で区切ったデータをを用意すれば、
ファイルをテキストエディタで開く→Ctrl+Aで全選択→Excelを開いて右クリックコピーの3操作で完結するわけですね。
これを実現するにあたって参考になる書籍
1回答で書ける範囲の内容だったので特にありません。
やることがキマリきってるんで、ハマる度にググって解決すれば済む話です。
ただし、ここにたどり着くまでの基礎の部分というわけで、シス管系女子をオススメします。
これは営業志望の新人OL「みんとちゃん」が誤ってシステム管理部門に配属され、
先輩社員に教えてもらいながらエンジニア流のファイル操作や情報処理のテクニックを教えてもらうという漫画です。
可愛いらしい見た目とは裏腹に現役エンジニアでも初耳のコアなテクニックまで解説されており、
Unix(Linux)やターミナルってこんなに凄いんだ、便利なんだっていう事を感じ取ってもらい、
またWindowsで同じことを実現するにはどうすれば…と考えるネタにもなります。
他には書店のパソコン関係のエリアに、
エンジニアが普段からやっている仕事術みたいな書籍が多数あり、
常日頃やっている退屈な業務を効率的にこなすアイデアが紹介されているので、色々立ち読みしてはどうでしょうか?
投稿2017/10/15 14:15
総合スコア21158
0
ベストアンサー
大きな流れとしては
- データの取得ルールの構築
人間が判断している基準をルール化(どういった検索ワードでサイトを検索し、サイトにたどり着き、どのリンクに連絡先が書いてありそうかの判定)
2. ルールに沿ったデータの取得
3. 取得したデータの加工(CSV化)
という流れになります。
2や3はyamatake0928さんの回答にあるような書籍だったり、「スクレイピング」で検索して出てくる情報で作成可能です。
メジャーな言語ならどの言語でも情報に困らない分野だと思います。
ここについては
0. 学ぶべき領域 = HTMLの構造についての知識、スクレイピング
0. 学ぶべき言語 = 入門者向け書籍でwebアプリケーションを扱ってる言語ならだいたい何でもOK
といったところでしょうか。
問題は1の方で、
不特定多数のサイトについて、精度高くルール化するというのは中々に困難です。
ちゃんと作られているサイトばかりではないので、「それっぽい」を判定出来ないといけないです。
こういった場合、学習データを十分に用意/調整出来るという前提であれば
0. 学ぶべき領域 = ディープラーニング、機械学習やディープラーニング
0. 学ぶべき言語 = 上記について情報が多い言語(個人的なイメージとしてはPythonが多いですが、メジャーな言語ならライブラリが存在すると思います)
といったアプローチでクリア出来そうです。
[以下、楽な方法]
上記は正直なところ、とても大変です。
webサイトからではなく、タウンページからデータを収集するような形なら2,3だけで済むので、
(既に各種ツールも存在しますが)タウンページ スクレイピング あたりで検索してチャレンジされるのもいいかなと思います。
もっと楽でタウンページよりは精度がいい方法としては、「名簿業者から買ってしまう」という方法も存在します。
(データの出所については気にしないといけませんが、法人名簿であれば合法的な方法で収集されているケースが多いです)
投稿2017/10/15 12:44
総合スコア18713
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/10/15 13:59
2017/10/15 14:25
0
ExcelVBAなんかどうでしょうか?
ExcelVBAでIEからWebデータを取得する手順を紹介している書籍も出ています。
http://amzn.to/2ynXoTg
投稿2017/10/15 10:59
総合スコア36
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。