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

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

ただいまの
回答率

89.99%

Linux環境でwgetコマンドを使ってウェブからhtmlデータを取得したい

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 2,025

dlrowolleh

score 118

初めて利用させていただく初心者です。
何かとよろしくお願いいたします。

前提・実現したいこと

Linux環境でウェブサイトからデータをダウンロードしたいと思ってます。

・wgetコマンド1行で実現したい
・1_吉田ディレクトリに保存したい
・取得するデータファイルの名前をコマンド実行時の"年_月_日_時:"に変更したい
・取得するファイルは1つのファイルにまとめられてもかまわないが -r -l1 を使いたい
・ディレクトリは作らないで、ファイルだけを作成したい

以上を実現するコマンドに修正していただきたいです。

初心者の私には難しかったためどうにもならず、質問いたしました。
先輩方のお力をどうぞ貸していただけないでしょうか。
よろしくお願いいたします。

発生している問題・エラーメッセージ

1_吉田ディレクトリに保存できなくて困っています。

試したこと参照してください。

該当のソースコード

wget -r -l1 -nd -P /home/yosida/Desktop/html/1_吉田/ -O "$(date '+%Y_%m_%d_%H:').html" http://※※.com

試したこと

1_吉田ディレクトリの場所は
1_吉田ディレクトリ内で

pwd

と入力すると

/home/yosida/Desktop/html/1_吉田

と表示されます。

そのため、

wget -r -l1 -nd -P /home/yosida/Desktop/html/1_吉田/ -O "$(date '+%Y_%m_%d_%H:').html" http://※※.com

と実行すると、
実行したディレクトリに保存され、元から空っぽだった1_吉田ディレクトリを見ると空っぽのままです。
たとえば、
Aディレクトリにいるときに実行した時、
Aディレクトリに2016_06_06_15:.htmlファイルができます。
この時、元から空っぽだった1_吉田ディレクトリを見ると空っぽのままです。

同様にBディレクトリにいて実行した時も
Bディレクトリに2016_06_06_15:.htmlファイルができます。
この時、元から空っぽだった1_吉田ディレクトリを見ると空っぽのままです。

補足情報(言語/FW/ツール等のバージョンなど)

より詳細な情報
GNU Wget 1.16.1 built on linux-gnu.です。

追記

wget -r -l1 -nd -O /home/yosida/Desktop/html/1_吉田/$(date '+%Y_%m_%d_%H:').html http://sample.com


と変更しました。

すると、

2016_06_24_15:.html

の中身が、

DataList.php?MstCode=01234567
DataListHyou.php?MstCode=01234567&Time=2016062215
DataListTitle.php?MstCode=01234567&Time=2016062215

の中身の結合されたものになっていました。

2016_06_29_14:.htmlのリンク先の
DataListHyou.php?MstCode=01234567&Time=2016062217
を取得したいです。
さらに
DataListHyou.php?MstCode=01234567&Time=2016062217

DataListHyou.php?MstCode=01234567&Time=
以降の10コの数字は年月日を表現しています。
なので任意の文字列として扱え、*が使えるのではないかと自分では考えております。

要するに、Webブラウザで※※.comと入力した時に表示される時のデータ
の中の
DataListHyou.php?MstCode=01234567&Time=”任意の文字列”

wgetコマンド1行で
/home/yosida/Desktop/html/1_吉田/に保存するにはどうすればのでしょうか
という質問になると思ったのですが、
それは可能でしょうか?

ちなみに、
wget -nd -O /home/yosida/Desktop/html/1_吉田/$(date '+%Y_%m_%d_%H:').html http://sample.com
で実行した際に取得でき、保存した2016_06_29_14:.htmlの中身ですが、

1 <html>
2 <head>
3 <META http-equiv="Content-Type" content="text/html; charset=EUC-JP">
4 <title>ホームページ</title>
5 </head>
6 <frameset rows="180,*" cols="*" frameBorder="0">
7 <frame name="Titke" src="DataListTitle.php?MstCode=01235467&Time=2016062912" scrolling="no">
8 <frame name="Hyou" src="DataListHyou.php?MstCode=01234567&Time=2016062912" scrolling="yes">
9 </frameset>
10 <noframes></noframes>
11 </html>


です。
8行目の

8 <frame name="Hyou" src="DataListHyou.php?MstCode=01234567&Time=2016062912" scrolling="yes">
"DataListHyou.php?MstCode=01234567&Time=2016062912"


の部分を保存したいです。

"DataListHyou.php?MstCode=01234567&Time=2016062912"


はリンク先なのでしょうか?
それとも

.php


とついているため、PHPファイルかもしれません。

"DataListHyou.php?MstCode=01234567&Time=2016062912"


はブラウザで開くことができます。
表に数字・文字などのデータが入っています。

<html>
<head>
<title>タイトル</title>
<link rel="stylesheet" media="all" href="Styles.css" type="text/css">
<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<script language="javascript">
<!--
function Check(){
    if(document.Form1.Err.value!=""){
        parent.location="ErrMsg.php?Err="+document.Form1.Err.value;
    }

}
-->
</script>

</head>

<body MS_POSITIONING="GridLayout" class="bodyInfo" onLoad="Check()">
<form name="Form1" action="">
<input type="hidden" name="Err" value="">
    <table border="0" cellpadding="0" cellspacing="0" style="position:absolute; top:0px; left:5px;">
      <tr>
    <td>
        <table style="font-size:12px;" border="1" class="hyoMenu" width="870">
                    <tr align="right">
                <td width="40" bgcolor="#FFFFCC">データ</td>
                <td width="20" bgcolor="#FFFFCC">データ</td>
                <td width="20" bgcolor="#FFFFCC">データ</td>
                <td width="20" bgcolor="#FFFFCC">データ</td>

                    <td width="40" bgcolor="#FFFFCC">0.001</td>
                                <td width="40" bgcolor="#FFFFCC">データ</td>
                <td width="40" bgcolor="#FFFFCC">データ</td>
                <td width="40" bgcolor="#FFFFCC">データ</td>
                <td width="40" bgcolor="#FFFFCC">データ</td>
                                    <td width="40" bgcolor="#FFFFCC">データ</td>
                                <td width="40" bgcolor="#FFFFCC"> </td>
                <td width="40" bgcolor="#FFFFCC">データ</td>
                <td width="40" bgcolor="#FFFFCC">データ</td>
                                    <td width="40" bgcolor="#FFFFCC">データ</td>
                                <td width="45" bgcolor="#FFFFCC">データ</td>
                <td width="40" bgcolor="#FFFFCC">データ</td>
                <td width="40" bgcolor="#FFFFCC">データ</td>
                <td width="40" bgcolor="#FFFFCC">データ</td>
                <td width="40" bgcolor="#FFFFCC">データ</td>
                <td width="40" bgcolor="#FFFFCC">データ</td>
            </tr>
              ~以下省略~


という感じです。
よろしくお願いします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • koji9004

    2016/07/20 17:35

    保存したhtmlファイルに記載されているリンク先を保存したいという認識でよいでしょうか。
    そのリンク先のURLはあらかじめ予測できるのか、それともhtmlを開くまでわからないものどちらになるでしょうか。
    また、後者の場合、単体でURLを開くことは出来るか(クッキーやパラメータを送っていないか)という点もあわせて教えていただけますと助かります。

    ただし、指定したURLのファイルの更にリンク先を保存するというのはwgetだけでは無理なのではと思っております。

    キャンセル

  • dlrowolleh

    2016/07/21 21:09

    情報を追記しました。
    一言でまとめますと、
    よろしくお願いいたします。
    DataListHyou.php?MstCode=01234567&Time=2016062912
    がほしい
    です。
    DataListHyou.php?MstCode=01234567&Time=2016062912
    はPHPなのか、
    リンク先なのかということですが、
    当方Webページの仕組みがよく分からないため
    そのあたりもご教授いただけましたら大変幸いです。
    何卒よろしくお願いいたします。

    キャンセル

  • dlrowolleh

    2016/07/21 21:11

    誤字があったため、修正いたします。
    一言でまとめますと、

    DataListHyou.php?MstCode=01234567&Time=2016062912 がほしい

    です。
    DataListHyou.php?MstCode=01234567&Time=2016062912

    はPHPなのか、 リンク先なのかということですが、


    当方Webページの仕組みがよく分からないため そのあたりもご教授いただけましたら大変幸いです。 何卒よろしくお願いいたします。

    キャンセル

  • koji9004

    2016/07/29 15:31

    wgetだけでは、保存したhtmlに記載されているリンク先のみを保存することが出来ません。他のファイルも保存しても良いならできるかもしれません

    キャンセル

回答 1

+3

こちらでどうでしょうか。

wget -r -l1 -nd -P "/home/yosida/Desktop/html/1_吉田/$(date '+%Y_%m_%d_%H:').html" http://※※.com

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/22 15:40

    -K_O- さん
    はじめまして。
    素早くお答えいただきましてありがとうございます。
    とても助かりました。
    早速実行してみました。
    すると、
    1_吉田 ディレクトリの中に、コマンド実行時の年_月_日:.htmlディレクトリ
    2016_06_22_15:.html
    が作成され、
    2016_06_22_15:.html
    ディレクトリの中に、
    Webブラウザで表示した時の※※.comのデータであると思われる

    DataList.php?MstCode=01234567
    DataListHyou.php?MstCode=01234567&Time=2016062215
    DataListTitle.php?MstCode=01234567&Time=2016062215

    が入っていました。

    取得するデータを

    DataListHyou.php?MstCode=01234567&Time=2016062215

    だけにし、尚且つ、

    1_吉田

    ディレクトリの中に、
    コマンド実行時の年_月_日:.htmlディレクトリ

    2016_06_22_15:.html

    を作成しないしないようにするにはどうしたらいいでしょうか。

    また、

    DataListHyou.php?MstCode=01234567&Time=2016062215



    Time=2016062215
    の部分はウェブページ表示中の年月日を表しているようなので

    DataListHyou.php?MstCode=01234567&Time=2016062215



    DataListHyou.

    以降は任意の文字列何でも良い としたいと思っています。

    更にこれを一行で済ませようとしたいです。
    コマンドはどのようになりますでしょうか?

    これらを利用して、
    1_吉田
     |--DataListHyou.php?MstCode=01234567&Time=2016062215
     |--DataListHyou.php?MstCode=01234567&Time=2016062216
     |--DataListHyou.php?MstCode=01234567&Time=2016062217
     ---DataListHyou.php?MstCode=01234567&Time=2016062218

    のようにしたいです。

    長文大変失礼しました。
    何卒よろしくお願いします。

    キャンセル

  • 2016/06/23 15:42

    Oオプションを使えば、指定のファイル名で保存することができ、
    ndオプションでは念のためディレクトリを作成しないオプションをつけております。

    こちらでいかがでしょうか。
    wget -nd -O /home/yosida/Desktop/html/1_吉田/$(date '+%Y_%m_%d_%H:').html http://※※.com

    キャンセル

  • 2016/06/29 14:16

    -K_O- さん
    度々コメントいただきありがとうございます。

    早速、
    wget -nd -O /home/yosida/Desktop/html/1_吉田/$(date '+%Y_%m_%d_%H:').html http://※※.com
    を実行しました。

    うまく、/home/yosida/Desktop/html/1_吉田/の中に※※.comの
    htmlファイルを取得し、保存することが出来ました。
    ありがとうございました。

    2016_06_29_14:.htmlを早速確認しましたところ、
    どうやら私が勘違いして
    支離滅裂な質問をしていたみたいです。
    私が欲しいデータの
    DataListHyou.php?MstCode=01234567&Time=2016062218
    の中身ではありませんでした。

    2016_06_29_14:.htmlのリンク先の
    DataListHyou.php?MstCode=01234567&Time=2016062217
    を取得したいです。
    さらに
    DataListHyou.php?MstCode=01234567&Time=2016062217

    DataListHyou.php?MstCode=01234567&Time=
    以降の10コの数字は年月日を表現しています。
    なので任意の文字列として扱え、*が使えるのではないかと自分では考えております。

    要するに、Webブラウザで※※.comと入力した時に表示される時のデータ
    の中の
    DataListHyou.php?MstCode=01234567&Time=”任意の文字列”

    wgetコマンド1行で
    /home/yosida/Desktop/html/1_吉田/に保存するにはどうすればのでしょうか
    という質問になると思ったのですが、
    それは可能でしょうか?

    ちなみに、
    wget -nd -O /home/yosida/Desktop/html/1_吉田/$(date '+%Y_%m_%d_%H:').html http://※※.com
    で実行した際に取得でき、保存した2016_06_29_14:.htmlの中身ですが、

    1 <html>
    2 <head>
    3 <META http-equiv="Content-Type" content="text/html; charset=EUC-JP">
    4 <title>ホームページ</title>
    5 </head>
    6 <frameset rows="180,*" cols="*" frameBorder="0">
    7 <frame name="Titke" src="DataListTitle.php?MstCode=01234567&Time=2016062912" scrolling="no">
    8 <frame name="Hyou" src="DataListHyou.php?MstCode=01234567&Time=2016062912" scrolling="yes">
    9 </frameset>
    10 <noframes></noframes>
    11 </html>

    私の質問、実現したいことがコロコロと変わり、何度も質問してしまって大変申し訳無いのですが、
    どのようにコマンドを変更すればいいでしょうか?
    よろしくお願いいたします。

    キャンセル

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

  • ただいまの回答率 89.99%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる