wget:カスタムURL属性に従います。

wget:カスタムURL属性に従います。

wgetは、小規模サイトのスナップショットをすばやく作成するのに最適なツールです。私が知っている限り(本当に見つからないことを願っています)、wgetは次のようなよくwget --help知られたHTML URL属性のみを尊重することができます。ただし、特定のサイトで非標準属性を使用して、wgetのURLとは異なる実際のURLを表すことがあります。たとえば、ウェブサイトにサイズ変更された画像を含む「静的」ギャラリーがある場合、特定の画像ページには次のコンテンツが含まれます。<a href=...<img src=...

<div zoomed_img="/gallery/image.jpg">
    <img src="/gallery/image_small.jpg"/>
</div>

zoomed_imgしたがって、wgetは/gallery/image.jpg。私のwgetコマンドは次のとおりです

wget --recursive \
    --domains domain \
    --no-parent \
    --page-requisites \
    --no-clobber \
    --html-extension \
    --convert-links \
    http://domain/gallery

wgetにカスタムURL HTML属性を尊重させることはできますか?

答え1

wget(1.16.3以降)では、ユーザーがカスタム属性を指定することはできません。もう一つあります提案--follow-tags同様の構文を使用して拡張オプションを使用しましたが、--follow-tags=a/href誰もフォローアップしませんでした。

シナリオをサポートするためにwgetをすばやく修正しても問題ない場合は、次を参照してください。今回提出してくださいカスタムタグまたは属性を追加するために必要なアクションの場合。

または、直接ポストプロセッサを作成することもできます。

答え2

〜のように得るフォローできませんデータソース私の解決策は、プロキシを使用してすべての項目を置き換えることでした。「src」による「データ-src」飛行中。

使用https://mitmproxy.org/たとえば、次のスクリプトを使用します。

"""
Fix the lazy loader SRC.
"""
from mitmproxy import http

def response(flow: http.HTTPFlow) -> None:
    if flow.response and flow.response.content:
        flow.response.content = flow.response.content.replace(
            b"data-src", b"src"
        )

エージェントを実行します。

mitmdump -s src.py --ssl-insecure

プロキシを使用するようにwgetに指示します。

wget -e use_proxy=yes -e http_proxy=localhost:8080 -e https_proxy=localhost:8080 --mirror --convert-links --adjust-extension --page-requisites --no-parent --progress=dot --recursive --level=6 --reject-regex "(.*)\?(.*)" --no-check-certificate https://website.com/

その結果、wgetはHTMLを読む前にHTMLを動的に編集するローカルプロキシを介してWebサイト全体をミラーリングします。このようにして画像URLが検索される。

関連情報