約6kのリンクのリストがあります。それぞれを調べて、そこにつながるページに特定の単語が含まれているかどうかを確認する必要があります。
これを行う最も簡単な方法は何ですか?
汚い解決策:
#! /bin/bash
while read link ; do
wget -qO- "$link" | grep -qiFf words.lst - && echo "$link"
done < links.lst > found.lst
links.lst
リンクは、1 行に 1 つのリンクとして保持する必要があります。単語は にwords.lst
、1 行に 1 単語を入れる必要があります。
私はあなたのためにそれを作成しました:
スペースで区切られたチェックする単語を含む words.txt というファイルを作成します。
1 行に 1 つずつチェックする URL のリストを含む links.url というファイルを作成します。
次のスクリプトを含む、crawler.sh という名前のファイルを作成します。
#!/bin/bash
# A file with a list of urls one per line
LINKS_FILE="links.url"
# A file with a list of words separed by spaces
WORDS_FILE="words.txt"
HTTP_CLIENT="/usr/bin/wget -O - "
rm -f /tmp/temp.html
for link in `cat "$LINKS_FILE"`
do
# Downloading page
echo "--"
echo "Scanning link: $link"
$HTTP_CLIENT "$link" > /tmp/temp.html
if [ $? -ne 0 ]
then
echo "## Problem downloading resource $link" 1>&2
continue
fi
# Checking words
for word in `cat "$WORDS_FILE"`
do
echo "Checking for the word \"$word\"..."
if [ "x`grep -i $word /tmp/temp.html`" != "x" ]
then
echo "** The word $word is found into the uri \"$link\""
continue 2
fi
done
echo "** No words found into \"$link\""
echo "--"
echo
done
rm -f /tmp/temp.html
ラッパーを実行します。
Selenium スクリプトを記述して各 URL にアクセスし、それらの単語がそれらのページに表示されることを確認できます。
最速の方法ではありませんが、最初に思いつきました:
#!bin/bash
while read url
do
content=$(wget $url -q -O -)
# and here you can check
# if there are matches in $content
done < "links.txt"