前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用shell抽取html数据之二(r2笔记75天)

使用shell抽取html数据之二(r2笔记75天)

作者头像
jeanron100
发布2018-03-14 16:26:21
6120
发布2018-03-14 16:26:21
举报

昨天使用shell脚本来抽取html数据的时候,碰到了一个问题,如果要抽取的数据成了如下的情形时,数据的抽取就会出现不一致,有一些记录会没有数据,只显示"未开售" 这个时候如果还是按照原来的思路来抽取就会出现数据混乱的情况,比如根据第一列抽取数据一共有75 行,但是根据右边的赔率只能得到74行,有一行的数据混乱,后面的数据就全乱了。

+1

5.80↑ 4.40 1.38↓

2.58↑ 3.55↑ 2.18↓

2

未开售

1.55↓ 4.30 4.00↑

大体的Html代码如下: 可以看到对应的div FM2,FHMW如果都有数据,都含有3行对应的数据,如果div FMW中只显示“未开售”的时候,只有一行。 这样数据明显的不对应。 需要找到一定的规律来有条件的抽取和过滤。

<div class="selection">
<div class="FMW">
<a class="homewin btn" op="w"><span class="num">6.00<span class="hoverArea" oncontextmenu="retur
n false;"><cite></cite></a>
<a class="draw btn" op="d"><span class="num">4.30<span class="hoverArea" oncontextmenu="return f
alse;"><cite></cite></a>
<a class="awaywin btn" op="l"><span class="num">1.38<span class="hoverArea" oncontextmenu="retur
n false;"><cite></cite></a>
<div class="FHMW">
<a class="homewin btn" op="hdw"><span class="num">2.55<span class="hoverArea" oncontextmenu="ret
urn false;"><cite></cite></a>
<a class="draw btn" op="hdd"><span class="num">3.50<span class="hoverArea" oncontextmenu="re
turn false;"><cite></cite></a>
<a class="awaywin btn" op="hdl"><span class="num">2.22<span class="hoverArea" oncontextmenu=
"return false;"><cite></cite></a>
<span class="handicap td">
<em class="num nh">0</em>
<em class="num h"><b class="w0 td1 num h-pt">-2</b></em>
<div class="odds-area td no-select">
<div class="selection">
<div class="FMW">
<em class="no-sale">未开售</em>
<div class="FHMW">
<a class="homewin btn" op="hdw"><span class="num">1.53<span class="hoverArea" oncontextmenu="return false;"><cite></cite></a>
<a class="draw btn" op="hdd"><span class="num">4.45<span class="hoverArea" oncontextmenu="return false;"><cite></cite></a>
<a class="awaywin btn" op="hdl"><span class="num">4.00<span class="hoverArea" oncontextmenu="return false;"><cite></cite></a>

现在来做一个改进,按照div来抽取。

grep "em class=\"vs\"" *e|awk -F"score-text\">" '{print $2}'|awk -F"<" '{print $1}' > vs.lst grep -A4 "div class=\"selection\"" *e|grep -A3 "FMW" |awk '{ if($2~/no-sale/) {print "\"num\">0< \n \"num\">0< \n \"num\">0< \n" } else {print $5$6}}'|awk -F"num\">" '{print $2}'|awk -F"<" '{print $1}' |awk -v RS= '{print $1" " $2" " $3}' > fmw.lst grep -A9 "div class=\"selection\"" *e|grep -A3 "FHMW" |awk '{ if($2~/no-sale/) {print "\"num\">0< \n \"num\">0< \n \"num\">0< \n" } else {print $5$6}}'|awk -F"num\">" '{print $2}'|awk -F"<" '{print $1}' |awk -v RS= '{print $1" " $2" " $3}' > hfmw.lst 抽取后的数据就会很自然的显示出来,我们把“未开售”的记录设置为0 数据抽取过滤后,结果就会如下所示,数据就不会乱了。 1,3.40,3.35,1.88,1.71,3.65,3.70 2,0,0,0,2.85,4.20,1.85 1,4.90,3.95,1.50,2.24,3.60,2.47 1,7.10,4.80,1.29,2.95,3.75,1.91 1,5.30,3.85,1.48,2.26,3.35,2.58 1,5.00,4.00,1.49,2.25,3.55,2.48 1,3.20,3.40,1.93,1.68,3.75,3.75

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2014-08-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档