2019-01-08写正则表达式grep抓取对应html标签

2019-01-08  本文已影响0人  L_ed1b

今天想抓取国家统计局上的表格想画图来着

表格的html下载好之后,正则表达式却出了问题

我使用的是grep的正则表达式

这里就有一个问题了因为linux文件每行末尾都有一个$号准确的来说就是它只能按行来匹配

如果咱们的标签写的好看一些就不会在同一行,然后我就一直在发愁使用百度上匹配回车换行的方法

'[\s\S]*'总是不成功!

再看看grep为什么不成功!主要是它按行来进行匹配的

算了我也懒得管什么换行符了~

看它不爽好久了直接用tr命令换掉成空格!

接下来所有的标签都在同一行了,我们吧想要的标签内容后面加个换行符,方便待会的提取

例如:

sed -e 's/\(<tr[^>]*>\)/\1\n/g' -e 's/\(<\/tr[^>]*>\)/\1\n/g'

把每一行的内容独立成一行

再把列标签抓出来,然后删除所有标签sed -e 's/<[^>]*>//g'

就得到我们想要的内容了

最后一气呵成!


cat index.php |tr "\r\n" " " |grep -e "<tr[^>]*>.*</tr>"|sed -e 's/\(<tr[^>]*>\)/\1\n/g' -e 's/\(<\/tr[^>]*>\)/\1\n/g' |grep "<td"|sed -e 's/<[^>]*>//g' |awk '{print $1,$2,$3}'

上一篇 下一篇

猜你喜欢

热点阅读