用語の使い方が不正確かもしれませんがご容赦下さい。
例えば、http://www.foobar.jp/xxx というURLがあった場合に、xxx の部分がファイルなのか、あるいはディレクトリなのか、あるいはスクリプトなのか、を知るにはどうしたらいいでしょうか?
現在、以下のようなプログラムを作成しています。
・あるURLを指定する。
・そのURLが指すページの内容を取得する。
・そのページの中にあるリンクを全て取得する。
・取得したリンクをフルパスに変換して出力する。
この際、
・指定したURLがホスト名のみ
・指定したURLが / で終わっている
・取得したリンクがフルパス
・取得したリンクが / で始まっている
ような場合は問題ないのですが、
・指定したURLがホスト名のみでなく、かつ / で終わらず、かつ取得したURL が / ではじまらない
といった場合は、どのようにフルパスを組み立てたらいいかがわかりません。
例えば、指定したURLが「http://www.foobar.jp/xxx」、取得したリンクが「yyy/zzz」のような場合、出力すべきフルパスは以下の2種類が考えられますが...
http://www.foobar.jp/xxx/yyy/zzz
http://www.foobar.jp/yyy/zzz
以上よろしくお願いします。
No.1ベストアンサー
- 回答日時:
>例えば、指定したURLが「
http://www.foobar.jp/xxx」、>取得したリンクが「yyy/zzz」のような場合、
>出力すべきフルパスは以下の2種類が考えられますが...
>http://www.foobar.jp/xxx/yyy/zzz
>http://www.foobar.jp/yyy/zzz
http://www.foobar.jp/xxx がもしディレクトリの場合、
Webサーバは通常 http://www.foobar.jp/xxx/ にリダイレクトします。
リダイレクトした場合には、http://www.foobar.jp/xxx/yyy/zzz を
フルパスとするのが正解です。
リダイレクトしない場合は、xxx がファイルであるとみなして、
http://www.foobar.jp/yyy/zzz をフルパスとするのが正解です。
ただし、リンクのフルパスを得るには、BASEタグを読む必要があります。
例えば、http://www.foobar.jp/xxx/index.htmlのHTMLに、
<BASE href="/QQQ/">と書いてあった場合、
<A href="xxx/yyy.html">link</A>のリンク先は、
http://www.foobar.jp/QQQ/xxx/yyy.html になります。
ありがとうございました。
リダイレクトするというのは知りませんでした。またBASEタグの件もおっしゃるとおりですね。
LWP::UserAgentを利用してページを取得するので、ヘッダの情報なども参照すればうまく処理できそうです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- C言語・C++・C# condaコマンドに対応したプロキシ設定が思うようにならないようです。 2 2022/04/11 17:15
- SEO googleサーチコンソールで、重複URLが多数発生、その修正方法について 2 2023/06/23 16:15
- JavaScript ブックマークレットについて 2 2022/10/09 11:48
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- その他(IT・Webサービス) 301リダイレクトの使い方について 7 2022/04/05 17:50
- PHP PHPを使って、別サイトの一部を取得して表示したいのです。。 1 2023/01/18 21:45
- JavaScript [再掲]指定したパスが現URLに含まれていたら特定要素を削除するJavascriptのコードについて 1 2023/05/10 15:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlをバージョンアップしたら...
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlの構文でカンマの意味が分...
-
英数文字列のうちの数値を4桁に...
-
テキストファイルで提出とは?
-
Perlのエラーについてご教授く...
-
AI sisterとは、偽物の人ですか?
-
perlのrequireの動き方について...
-
perlのプログラミング 部分入れ...
-
Strawberry Perl for Windows ...
-
arduino の割り込み処理について
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
perlのflock関数でロックをかけ...
-
bashスクリプト
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
perlからのexcel読み込み
-
readdir におけるフルパスでの...
-
無料配布の郵便番号自動入力cgi...
-
エラーログ「\\x8ew\\x92\\xe8...
-
perl system関数 引数 フォルダ
-
Perlファイルテスト演算子が正...
-
unlink 、renameが使えない理由
-
perl上からfindを使い検索した...
-
コマンドプロンプトからperlを...
-
バッチファイルの作り方(CSV→...
-
awkスクリプトでダブルクォーテ...
-
VBAでCSVファイルの特定行を書...
-
DOSコマンドで、標準出力を出力...
-
ExcelをCSV書き出す場合のシー...
-
openした後、closeしないでプロ...
-
close()で例外が投げられる理由
-
batファイルでrenameができませ...
-
VBAでCSVファイルを途中行まで...
-
window.open でのファイル指定方法
-
VBAで巨大なファイルの途中から...
おすすめ情報