有个小需求,就是爬取一个小网站一些网页里的某些信息,url是带序号的类似的,不需要写真正的spider,网页内容也是差不多的
需要取出网页中<h1></h1>中间的字符串,而且只要第一行,最后带序号写到文件里
我并不是经常写shell的,只想快速达到目的
#!/bin/bash for ((i=2;i<=100;i=i+1)) do echo "#############=P$i" echo "http://.....com/.../level-$i" wget -O rid-$i.txt http://.....com/.../level-$i done
本来想写到一个脚本里,但是发现wget不是组赛式的,没法在wget命令后紧接着处理返回的文件内容,就分两个脚本处理吧
#!/bin/bash rm -f ridds.txt for ((i=2;i<=100;i=i+1)) do echo "$i" echo "$i">>ridds.txt grep -E "<h1>(.*)</h1>" rid-$i.txt|head -1|sed 's/<h1>//g'|sed 's/<\/h1>//g'|sed "s/’/'/g"|sed "s/‘/'/g"|sed "s /′/'/g"|sed 's/”/"/g'>>ridds.txt done
取出<h1></h1>中间的内容,然后将里面用’表示的单双引号什么的替换掉,替换时注意替单引号是外面要用双引号,反之也是
其实本来的需求是取YYY这一行的下一行<h1></h1>,只不过一开始没找到如何做,就改成取第一行<h1></h1>的内容了,好在那些网页都满足这个条件
不过后来同学告诉我用egrep可以匹配隔行的,egrep -A1 YYY test|egrep <h1>.*<h1>