質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

3回答

7215閲覧

営業リスト作りを自動化したいです。

0ku_hir0

総合スコア9

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

1クリップ

投稿2017/10/15 10:25

編集2017/10/15 10:41

⚪︎実現したいこと
営業リスト作りを自動化するシステムを開発したいと考えています。
現在は企業の電話番号が載っているwebサイトを見て、企業名とその電話番号をエクセルに手入力してリスト作りをしています。
非常に手間なのでこの作業を自動化するシステムを作りたいです。

⚪︎前提
自分のプログラミング経験は
・HTMLで簡単なホームページを作った事がある。
・テックカンパニーでruby on railsを使ってwebサービスを作るという講義を受講しツイッターのクローンを作った事がある。

と言う状態です。プログラミング環境の構築はできています。
上記実現したいことを実現さするにあたって何から手を付けたらいいか全くわからないです。

・お聞きしたいこと
学ぶべき言語
学ぶべき領域、考え方
これを実現するにあたって参考になる書籍

です。
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

学ぶべき領域、考え方

やろうとしていることはスクレイピングです。
概要はRuby + Nokogiriでスクレイピング - Qiita等の記事を参照してください。

学ぶべき言語

Ruby、Python、Node.js、PHP辺りが無難でどれでも構いません。
得意な物を選んでください。
多少心得のあるRubyがオススメでしょう。

何故Rubyというかスクリプト言語を推すかの理由ですが、
Webサイトの元になるのはHTMLです。
HTMLってのは多少ルールが風変わりなだけで文字列です。

上記上げた世の中のスクリプト言語の有名所は大抵この文字列の変換が得意です。
作業によって言語により多少得意不得意はあるものの、
プログラムを構築する人の言語の得意不得意で簡単に覆る程度の差しかありません。


さて、実際に何をやるかに移りましょう。
ざっくりと考えますが、大まかに分けて以下の3章立てになるでしょう

  1. URLから企業名を抽出する
  2. URLから電話番号を抽出する
  3. どうやってエクセルに反映するか

まず、企業名ってどうやって抽出するかですが、
これは基本的にトップページの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

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

大きな流れとしては

  1. データの取得ルールの構築

人間が判断している基準をルール化(どういった検索ワードでサイトを検索し、サイトにたどり着き、どのリンクに連絡先が書いてありそうかの判定)
2. ルールに沿ったデータの取得
3. 取得したデータの加工(CSV化)

という流れになります。

2や3はyamatake0928さんの回答にあるような書籍だったり、「スクレイピング」で検索して出てくる情報で作成可能です。
メジャーな言語ならどの言語でも情報に困らない分野だと思います。

ここについては
0. 学ぶべき領域 = HTMLの構造についての知識、スクレイピング
0. 学ぶべき言語 = 入門者向け書籍でwebアプリケーションを扱ってる言語ならだいたい何でもOK

といったところでしょうか。

問題は1の方で、
不特定多数のサイトについて、精度高くルール化するというのは中々に困難です。
ちゃんと作られているサイトばかりではないので、「それっぽい」を判定出来ないといけないです。

こういった場合、学習データを十分に用意/調整出来るという前提であれば
0. 学ぶべき領域 = ディープラーニング、機械学習やディープラーニング
0. 学ぶべき言語 = 上記について情報が多い言語(個人的なイメージとしてはPythonが多いですが、メジャーな言語ならライブラリが存在すると思います)

といったアプローチでクリア出来そうです。

[以下、楽な方法]
上記は正直なところ、とても大変です。
webサイトからではなく、タウンページからデータを収集するような形なら2,3だけで済むので、
(既に各種ツールも存在しますが)タウンページ スクレイピング あたりで検索してチャレンジされるのもいいかなと思います。
もっと楽でタウンページよりは精度がいい方法としては、「名簿業者から買ってしまう」という方法も存在します。
(データの出所については気にしないといけませんが、法人名簿であれば合法的な方法で収集されているケースが多いです)

投稿2017/10/15 12:44

tanat

総合スコア18713

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0ku_hir0

2017/10/15 13:56

ご回答ありがとうございます。 理想は複数サイトから精度の高いデータを抽出することです。難しいことなのですね。。一旦はルールに沿ったデータの取得、取得した情報の加工の部分でチャレンジしてみようと思います。本業は広告営業なのですが暇を見てルール構築の部分も勉強してみます。とても勉強になりました。ありがとうございます。
退会済みユーザー

退会済みユーザー

2017/10/15 13:59

まあ汎用的な名前になるほど精度が低くなりますが。 WEBをクローリングしてやると・・・ etc 佐藤商店
tanat

2017/10/15 14:25

いきなり全自動とはいかなくても asahina1979さんのコメントや miyabi-sunさんの回答の方向でご自身で定義出来るルールから始めて、 ある程度はプログラムにやらせて、最初と最後をに手作業を挟むというのは現実的な労力かつ高い精度を保てそうに思います。
guest

0

ExcelVBAなんかどうでしょうか?
ExcelVBAでIEからWebデータを取得する手順を紹介している書籍も出ています。
http://amzn.to/2ynXoTg

投稿2017/10/15 10:59

Yamachan0928

総合スコア36

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0ku_hir0

2017/10/15 13:37

ご回答ありがとうございます! 複数サイトから複数の情報の抽出が最終的な目標なので、tanatさんのご回答が目指すところにはなりそうです。ただ、ものすごく時間はかかりそうですので、まずはyamatake0928さんの回答通りVBAでリスト作りやってみます!!これだけでもだいぶ作業楽になりそうな気がします。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問