![Webページに特定のテキストが含まれている場合のURLリストの作成[閉じる]](https://linux33.com/image/143260/Web%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AB%E7%89%B9%E5%AE%9A%E3%81%AE%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%81%8C%E5%90%AB%E3%81%BE%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AEURL%E3%83%AA%E3%82%B9%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90%5B%E9%96%89%E3%81%98%E3%82%8B%5D.png)
「XYZ」というテキストが含まれているかどうかに応じて、WebページのURLリストを作成しようとしています。
URLの形式は次のとおりです。
https://www.website.tld/page.php?var1=???&var2=static
???は、1から始まり、エラーページ(「ERROR」というテキストを含むページ)が表示されるまで、毎回1ずつ増加する数字です。
一致するURLを出力ファイルにダンプしたいです。私はカールがそのようなURLを順次スキャンし、その出力をgrepに渡すことができることを読んだ。しかし、grepの出力後にURLを検索して保存する方法がわかりません。
答え1
以下がないと、URLを作成するのが簡単になる可能性がありますcurl
。
for ((i=1; i<1000; i++)); do
url="https://www.website.tld/page.php?var1=${i}&var2=static"
if curl -s "$url" | grep -q XYZ; then
echo "$url" >> positive-matches.txt
fi
od
答え2
私は作業スクリプトを作成しました。誰もが役立つ場合に備えて共有してください。 @nohillsideの答えが役に立ちました。
#!/bin/bash
count=1
while true
do
url="https://www.website.tld/page.php?var1=${count}&var2=static"
text=`curl -s "$url"`
if echo "$text" | grep -q "ERROR"
then
break
elif echo "$text" | grep -q "XYZ"
then
echo "$url" >> matches.txt
fi
((count++))
done