假设我有一个包含网页链接列表的文件。
www.xyz.com/asdd
www.wer.com/asdas
www.asdas.com/asd
www.asd.com/asdas
我知道做curl www.xyz.com/asdd
会获取该网页的html。我想从该网页上获取一些数据。
所以场景是使用curl逐个命中文件中的所有链接,从网页中提取一些数据并存储在其他地方。任何想法或建议。
答案 0 :(得分:6)
如评论中所示,这将循环遍历your_file
和curl
每一行:
while IFS= read -r line
do
curl "$line"
done < your_file
要获取网页的<title>
,您可以grep
这样的内容:
grep -iPo '(?<=<title>).*(?=</title>)' file
所以你可以一起做
while IFS= read -r line
do
curl -s "$line" | grep -Po '(?<=<title>).*(?=</title>)'
done < your_file
注意curl -s
用于静音模式。请参阅google page的示例:
$ curl -s http://www.google.com | grep -Po '(?<=<title>).*(?=</title>)'
302 Moved
答案 1 :(得分:1)
您可以使用xargs
仅一行完成此操作。假设您在工作目录中有一个文件,其中所有URL(每行一个)称为sitemap
xargs -I{} curl -s {} <sitemap | grep title
这将提取其中包含“ title”一词的所有行。要提取标题标签,您需要稍微更改grep
。 -o
标志可确保仅打印grepped结果:
xargs -I{} curl -s {} <sitemap | grep -o "<title>.*</title>"
\
转义字符。
[\"\']
那样对它们进行转义curl
输出。如果检测到此错误,则需要使用iconv