api_keyでのWgetイメージの問題

api_keyでのWgetイメージの問題

適切なパスとイメージ名を含む新しいアイテムのXMLフィードを送信するベンダーがあります。イメージのURLパスを削除するスクリプトを作成しましたが、wgetを使用してそのパスを取得しようとするとプロトコルエラーが発生します。他の同様のツールを使用してもwget -i list.txt問題ありません。この問題の原因は何ですか?最高のアドバイスは何ですか?

答え1

私の考えにはこれがうまくいくと思います。

grep -oP "http:\//[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*.jpg" inputfile  | xargs -n1 wget

または、リストがあれば使用できます。

cat list.txt | xargs -n1 wget 

答え2

入力サンプルと少なくともスクリプトのコアを見なくても、URLが悪意のあるSpace Snowmanによって破損していると推測できます。彼らはこの種の無責任な行動で悪名高い。唯一の希望は、エリア51テクニカルサポートに電話することです。

あるいは、ここで例とスクリプトを提供することもできます。これはクレイジーな考えですが、役に立つかもしれません。必要に応じて匿名化または難読化しますが、XMLファイルの構造を台無しにしないでください。

私はあなたが単純な正規表現を使用していると思い、通常は正規表現を使用してXMLを「解析」するのは良い考えではないことを指摘しています。これは壊れやすく有効ですが、予期しない入力によって簡単に混乱する可能性があります。 xml解析ライブラリ、関数、または同様のツールXML2XMLファイルからURLを抽出します。

また、Deer Hunterが上記で示したように、URLにシェルに特別な意味を持つスペースや句読点文字(たとえば、、、などの複数の文字)が含まれている場合は、&URL?*使用する前にURLを引用またはエスケープする必要があります。 wget URLコマンドライン。非常に簡単な例として、$ URL変数の周りに二重引用符を書き留めてwget "$URL"ください。wget $URL

答え3

何度も検討したところ、ネットワークに問題があることがわかりました。 wgetスクリプトは他のサイトからダウンロードしたリンクに対して機能し、jdownloaderなどのウィンドウベースのツールを使用します。何らかの理由で、Linuxベースの当事者はベンダーのNT Webサーバーにアクセスできません。 winbindをインストールしましたが、ネットワークが正しく確認されます。

関連情報