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

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

新規登録して質問してみよう
ただいま回答率
85.37%
Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Q&A

1回答

4857閲覧

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

dlrowolleh

総合スコア120

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

1グッド

1クリップ

投稿2016/06/14 07:08

編集2016/07/21 12:04

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

###前提・実現したいこと

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> ~以下省略~

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

mondaminZ👍を押しています

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

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

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

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

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

koji9412

2016/07/20 08:35

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

2016/07/21 12:09

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

2016/07/21 12:11

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

2016/07/29 06:31

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

回答1

0

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

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

投稿2016/06/14 07:33

koji9412

総合スコア158

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

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

dlrowolleh

2016/06/22 06: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 のようにしたいです。 長文大変失礼しました。 何卒よろしくお願いします。
koji9412

2016/06/23 06:42

Oオプションを使えば、指定のファイル名で保存することができ、 ndオプションでは念のためディレクトリを作成しないオプションをつけております。 こちらでいかがでしょうか。 wget -nd -O /home/yosida/Desktop/html/1_吉田/$(date '+%Y_%m_%d_%H:').html http://※※.com
dlrowolleh

2016/06/29 05: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> 私の質問、実現したいことがコロコロと変わり、何度も質問してしまって大変申し訳無いのですが、 どのようにコマンドを変更すればいいでしょうか? よろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問