我正在尝试卷曲一个URL列表,以便从一组7000多个URL中聚合它们的表格数据。 URL位于.txt文件中。我的目标是cURL每一行并将它们保存到本地文件夹,然后我将grep并解析HTML表。
不幸的是,由于文件中URL的格式,存在重复项(example.com/State/City.html。当我运行一个短暂的循环时,我收回的文件少于5500,所以至少有列表中有1500个dupes。因此,我尝试grep URL的“/State/City.html”部分并将其传输到sed以删除/并替换连字符以与curl -O一起使用.cURL正在尝试抓住
以下是我尝试过的示例:
while read line
do
FILENAME=$(grep -o -E '\/[A-z]+\/[A-z]+\.htm' | sed 's/^\///' | sed 's/\//-/')
curl $line -o '$FILENAME'
done < source-url-file.txt
感觉我错过了一些相当简单的事情。我已经扫描了这个手册页,因为我担心我混淆了-o和-O,而我过去经常这么做。
当我在终端中运行循环时,输出为:
警告:无法创建文件State-City.htm
答案 0 :(得分:0)
首先:您没有将网址信息传递给grep。
第二:尝试这一行:
FILENAME=$(echo $line | egrep -o '\/[^\/]+\/[^\/]+\.html' | sed 's/^\///' | sed 's/\//-/')
答案 1 :(得分:0)
我认为你不需要多个seds和grep,只需1 sed就足够了
urls=$(echo -e 'example.com/s1/c1.html\nexample.com/s1/c2.html\nexample.com/s1/c1.html')
for u in $urls
do
FN=$(echo "$u" | sed -E 's/^(.*)\/([^\/]+)\/([^\/]+)$/\2-\3/')
if [[ ! -f "$FN" ]]
then
touch "$FN"
echo "$FN"
fi
done
此脚本应该可以正常工作,并且还可以将相同的文件下载到多个文件中。
只需用touch
一个
curl
命令