web-dev-qa-db-ja.com

wgetを使用してフレームソースを取得するにはどうすればよいですか?

ServicenowのWebサイトからhtmlデータを取得しようとしています。フレームを使用しているので、wgetを使用してフレームソースを抽出したいと思います。この仕事をするためのオプション/フラグが見つかりません。ページソースのみを抽出でき、フレームソースは抽出できません。

wget -q https://company.service-now.com/task.do?sysparm_query=number=TASK0299719

Chrome browser snippet of right-click on website

2
ayrton_senna

フレームは、通常のリンクと同じように、独自のURLを持つ別個のページです。フレームを使用することにより、最初のページの作成者は、ユーザーがクリックして自分で表示するのを待つのではなく、2番目のページをすぐに取得して最初のページ内に表示する必要があると言っています。

Wgetは何も表示しないか、インタラクティブなユーザーがいないため、フレームとリンクの区別は無意味です。したがって、この問題は「wgetにリンクをたどってもらいたい」という特殊なケースと考えることができます。

wgetには再帰モード(-r)があり、元のURLからのリンクをたどり、それらもダウンロードします。リンク先のURLのallをダウンロードしたくないので、絞り込む必要があります。

これが1回限りの操作である場合、またはフレームのURLが安定している場合は、元のページソースを自分で読み取り、iframe要素のsrc属性を見つけて、wgetに取得を依頼するだけです。

より多くの作業を行うためにwgetが必要な場合は、--follow-tagsオプションを使用して、iframeURLのみを取得するように依頼できます。

wget -r --follow-tags=iframe http://yourpage/

これにより、ページとそれに含まれるすべてのiframeがダウンロードされます。 iframe内にiframeがある場合、-l 1のような再帰深度制限も指定しない限り、iframeも取得します。

4
user41515