实际上,我真的建议使用DOM解析器(例如Nokogiri,hxselect等),
但是您可以这样做(例如处理以<meta
开头的行并“提取”机器人属性内容的值):
curl -s "$url" | sed -n '/\<meta/s/\<meta[[:space:]][[:space:]]*name="*robots"*[[:space:]][[:space:]]*content="*\([^"]*\)"*\>/\1/p'
这将打印属性值或空字符串(如果不可用)。
您需要纯Bash解决方案吗?还是您有sed
?
,
您可以添加一行以从页面的源代码中提取机器人的 meta 标头,并使用 echo 修改该行以显示其值:
grid-column-gap
此示例使用机器人的 meta 标头记录原始行。
如果您要在页面上没有用于机器人的 meta 标头时添加标记“-”,则可以更改ul
行,并添加以下行:
grid-column-gap: 2px;
如果要提取属性的确切值,则可以更改该行:
#!/bin/bash
while read url
do
dt=$(date '+%H:%M:%S');
urlstatus=$(curl -kH 'Cache-Control: no-cache' -o /dev/null --silent --head --write-out '%{http_code} %{redirect_url}' "$url" )
metarobotsheader=$(curl -kH 'Cache-Control: no-cache' --silent "$url" | grep -P -i "<meta.+robots" )
echo "$url $urlstatus $dt $metarobotsheader" >> urlstatus.txt
done < $1
当URL不包含任何用于机器人的 meta 标头时,它将显示 no_meta_robots 。
本文链接:https://www.f2er.com/3153456.html