我有一个大约6k链接的列表。我需要浏览每一个,看看它导致的页面是否包含特定的单词。
最简单的方法是什么?
答案 0 :(得分:3)
肮脏的解决方案:
#! /bin/bash
while read link ; do
wget -qO- "$link" | grep -qiFf words.lst - && echo "$link"
done < links.lst > found.lst
链接应保存在links.lst
中,每行一个链接。单词应保存在words.lst
中,每行一个单词。
答案 1 :(得分:1)
我为你创建了一个:
创建一个名为words.txt的文件,其中包含要用空格分隔的单词。
创建一个名为links.url的文件,其中包含一个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
运行包装器。
答案 2 :(得分:0)
您可以编写一个selenium脚本来访问每个网址,然后检查这些网页上是否显示这些字词。
答案 3 :(得分: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"