ウェブサイトにアクセスする方法(ユーザー名とパスワードが必要)と.csv.gzで終わるすべてのファイルの完全なWebサイトリンクを.txtファイル(1行に1行)に抽出する方法です。サブフォルダからデータを抽出したくありません。
たとえば、次の内容をmy.txtに保存したいとします。
http://www.google.com/1.csv.gz
http://www.google.com/xyz.csv.gz
しかし、保存しないでください。
http://www.google.com/extra/abc.csv.gz
答え1
FTPや他のプロトコルとは異なり、HTTPプロトコルにはすべてのファイルリストを「インポートする」機能はありません。ファイルをインポートするには(GET
)対応するURLを知る必要があります。
多くのWebサーバーは、サーバー上のそのディレクトリに存在する各URLのフォームへのリンクのリストを含むURLのHTMLページを生成する便利な機能を提供することで、疑似http://site/directory/
ファイルを提供します。 。顧客が見つけることができるリストを作成してください。ただし、この機能はサイトの最上位ディレクトリ()ではほとんど使用されません。なぜなら、サイト作成者は通常、サイトの最上位 URL に対して明示的な HTML ページを提供するからです。したがって、存在する場合、事前にその存在を知らないと、通常は見つかりません。http://site/directory/file
file
http://site/
http://www.google.com/1.csv.gz
もしファイルインデックスを提供するWebサーバーを扱っている場合は、リストをHTMLからテキストに簡単に変換し、それを使用または使用せずにいくつかのテキスト処理をawk
実行できますが、sed
これは特定のWebサーバーの正確な形式によって異なります。 HTMLリストを返しています...
curl http://site/ | sed -e [....]
答え2
私はあなたが望むすべてのファイルがサイトのインデックスページにリストされていると仮定します。その場合は、テキストブラウザを使用できます。サルクそのページで見つけたURLのリストをダンプし、sedを使用して目的のURLを抽出します。たとえば、
lynx -auth=ID:PASSWD -dump http://www.google.com |
sed '1,/^References/d
\:www\.google\.com/[^/]*\.csv\.gz$:!d
s/^ *[^ ]* //
' >my.txt
sedは、最後の参照リスト(URLリンクなど)まですべての行を削除します(d)。次に、パターンと一致しない行を削除します(代わりに\:
新しいパターン区切り文字を導入して、エスケープせずにパターンで/を使用できます)。を除くすべての文字と一致します。行の終わりです。その後、lynxがURLに使用した番号を削除します。:
/
[^/]*
/
$