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

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

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

4239閲覧

PHP・MySQLによるDBへのHTMLデータの格納

kenya.yasuhara

総合スコア17

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/08/26 13:02

編集2017/08/26 13:18

ウェブページ (Yahooファイナンス)から、証券コードを引数にして任意の株価ページをダウンロードしてDBに格納しようとしています。

<質問>
この場合MySQLだけで済むのか、それともPHPも書かなければいけないのか、またどちらの場合もどのような処理をすればそれが実行できるのでしょうか。

<できていること>

<できていないこと>

  • 証券コード (上記の株価ページの場合'2678')を引数として、上記株価ページをダウンロードしDBに格納するコードを書く

カラムは
page// htmlファイルを格納

のみです。

<環境>

  • Mac
  • テキストエディタ: atom

私初学者であるため、なるべく単純な方法で解説いただけますと大変助かります。

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

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

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

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

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

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

guest

回答2

0

ベストアンサー

技術的には、何らかのプログラム言語でスクレイピング(使いたい言語やOS+スクレイピングで検索するとサンプルなどが見つかります)を行い、実行結果をその言語からDBにアクセスして保存します。

ただ、YAHOOファイナンスの場合、
Yahoo!ファイナンス掲載情報の自動取得(スクレイピング)は禁止しています

と言う事なので、
「利用規約的に実行してはいけない」
「無視して実行した場合、アクセスブロックや法的措置などがとられる可能性がある」
となってしまいます。

投稿2017/08/26 13:19

tanat

総合スコア18713

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

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

kenya.yasuhara

2017/08/26 13:31

ご回答いただきありがとうございます。 恥ずかしながらスクレイピングというのは初めて聞きました。それ以外にHTMLデータをDBへ格納する方法はないのでしょうか。
tanat

2017/08/26 14:12

HTMLを自動で取得、解析して保存する(+法則に基づいて自動アクセスを繰り返す)という手法そのものがスクレイピングと呼ばれるので、 「それ以外」となると、「基本的には存在しない」という回答になってしまいます。 (YAHOOファイナンスの場合、データ自体を売り物にしているので、仮にデータ取得部分を人力で行ったとしても数が多ければアウトと判定され可能性があると思います。) テスト的に手動で少数のダウンロードしたHTMLを解析して、証券コードをキーにして検索できる仕組みを作る と言う事であれば利用規約にも抵触しないはずなので(と私は思います)、 一度スクレイピングの手法を学んでみて、データの取得部分を手動に置き換えるというアプローチがいいかなと思います
guest

0

MySQLのみの場合

ローカルにhtmlファイルがあるのであれば、MySQLのLOAD_FILE関数でファイル内容を読み込むことができますが、パーミッション等の問題があるのであまりおすすめしません。またHTTPクライアントではないため、URLの一部を動的に変更して取得しデータベースに格納するような目的では使用できません。

sql

1INSERT INTO `mytable` VALUES('page', LOAD_FILE('/Users/Documents/bar.html'))
MySQL+PHP

最も一般的な方法です。file_get_contents関数はURLからhtmlソースを取得し、文字列として返します。以下の例では、URLの一部を動的にしてhtmlソースを取得しています。あとはPDO等を使ってMySQLデータベースにinsertするコードを書くだけです。

php

1function get_html($stock) { 2 $url = "https://stocks.finance.yahoo.co.jp/stocks/detail/?code={$stock}.T"; 3 $html = file_get_contents(url); 4 return $html; 5} 6 7$stock_id = "2678"; 8$source = get_html($stock_id); 9 10// PDOの初期化は省略 11$stmt = $pdo->prepare("INSERT INTO `mytable` VALUES(:page, :html)"); 12$stmt->bindValue(":page", $stock_id); 13$stmt->bindValue(":html", $source); 14$stmt->execute(); 15

多くのケースではhtmlソース全体を保存するのではなく、htmlソース中の必要な情報を抜き出して保存・再利用します。このような手法はスクレイピングと呼ばれています。

投稿2017/08/26 18:54

jinbe

総合スコア17

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問