用shell脚本爬取网页信息

有个小需求,就是爬取一个小网站一些网页里的某些信息,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/&#8217;/'/g"|sed "s/&#8216;/'/g"|sed "s
/&#8242;/'/g"|sed 's/&#8221;/"/g'>>ridds.txt
done

 

取出<h1></h1>中间的内容,然后将里面用&#8217表示的单双引号什么的替换掉,替换时注意替单引号是外面要用双引号,反之也是

其实本来的需求是取YYY这一行的下一行<h1></h1>,只不过一开始没找到如何做,就改成取第一行<h1></h1>的内容了,好在那些网页都满足这个条件

不过后来同学告诉我用egrep可以匹配隔行的,egrep -A1 YYY test|egrep <h1>.*<h1>

posted @ 2013-07-05 11:35  伪程序员的自我修养  阅读(1749)  评论(0编辑  收藏  举报