0

約6kのリンクのリストがあります。それぞれを調べて、そこにつながるページに特定の単語が含まれているかどうかを確認する必要があります。

これを行う最も簡単な方法は何ですか?

4

4 に答える 4

3

汚い解決策:

#! /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 単語を入れる必要があります。

于 2012-05-28T14:33:21.270 に答える
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

ラッパーを実行します。

于 2012-05-28T14:48:47.383 に答える
0

Selenium スクリプトを記述して各 URL にアクセスし、それらの単語がそれらのページに表示されることを確認できます。

于 2012-05-28T14:18:31.813 に答える
0

最速の方法ではありませんが、最初に思いつきました:

#!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"
于 2012-05-28T14:28:00.680 に答える