样例网页:http://hotels.ctrip.com/hotel/1055026.html
目标:抓取价格
1、下载页面源代码,定位到价格区域
<div class="price_box">
<p class="staring_price">
<span class="ico_box"></span>
<dfn>¥</dfn><span class="price"><var class="p_h16_5"></var><var class="p_h16_7"></var><var class="p_h16_7"></var></span><span class="qi">起</span>
</p>
</div>
其中<var class="p_h16_5">这种表示价格中的某一位数字
页面分析如下图:
其中,backgroud的链接为
http://pic.c-ctrip.com/priceblur/h16/0934747e9e2a4b089f3106f3a0afd470.gif
可以看到,存在数字和 ". , (空格)",并且数字的排序混乱,存在重复。
当时的样式表为:
.p_h16_0{background:url('http://pic.c-ctrip.com/priceblur/h16/0934747e9e2a4b089f3106f3a0afd470.gif') no-repeat -1827px;*zoom:1; padding:0 8px; font-size: 30px;}
.p_h16_1{background:url('http://pic.c-ctrip.com/priceblur/h16/0934747e9e2a4b089f3106f3a0afd470.gif') no-repeat -913px;*zoom:1; padding:0 8px; font-size: 30px;}
.p_h16_2{background:url('http://pic.c-ctrip.com/priceblur/h16/0934747e9e2a4b089f3106f3a0afd470.gif') no-repeat -1740px;*zoom:1; padding:0 8px; font-size: 30px;}
.p_h16_3{background:url('http://pic.c-ctrip.com/priceblur/h16/0934747e9e2a4b089f3106f3a0afd470.gif') no-repeat -420px;*zoom:1; padding:0 8px; font-size: 30px;}
.p_h16_4{background:url('http://pic.c-ctrip.com/priceblur/h16/0934747e9e2a4b089f3106f3a0afd470.gif') no-repeat -390px;*zoom:1; padding:0 8px; font-size: 30px;}
.p_h16_5{background:url('http://pic.c-ctrip.com/priceblur/h16/0934747e9e2a4b089f3106f3a0afd470.gif') no-repeat -627px;*zoom:1; padding:0 8px; font-size: 30px;}
.p_h16_6{background:url('http://pic.c-ctrip.com/priceblur/h16/0934747e9e2a4b089f3106f3a0afd470.gif') no-repeat -1345px;*zoom:1; padding:0 8px; font-size: 30px;}
.p_h16_7{background:url('http://pic.c-ctrip.com/priceblur/h16/0934747e9e2a4b089f3106f3a0afd470.gif') no-repeat -267px;*zoom:1; padding:0 8px; font-size: 30px;}
.p_h16_8{background:url('http://pic.c-ctrip.com/priceblur/h16/0934747e9e2a4b089f3106f3a0afd470.gif') no-repeat -528px;*zoom:1; padding:0 8px; font-size: 30px;}
.p_h16_9{background:url('http://pic.c-ctrip.com/priceblur/h16/0934747e9e2a4b089f3106f3a0afd470.gif') no-repeat -2182px;*zoom:1; padding:0 8px; font-size: 30px;}
.p_h16_10{background:url('http://pic.c-ctrip.com/priceblur/h16/0934747e9e2a4b089f3106f3a0afd470.gif') no-repeat -6px -2px;*zoom:1; padding:0 7px 0 0px;font-size: 30px;}
.p_h16_11{background:url('http://pic.c-ctrip.com/priceblur/h16/0934747e9e2a4b089f3106f3a0afd470.gif') no-repeat -36px -2px;*zoom:1; padding:0 7px 0 0px;font-size: 30px;}
之所以说是当时的样式表,因为这个一直在动态变化的。
到现在,我们知道了,该网的价格反爬的方式,就是通过css样式设置价格数字图片的位置来实现的。
暂时的解决方案:从移动端页面下手,这里是没有做反爬保护的
eg:http://m.ctrip.com/html5/Hotel/HotelDetail/374791.html#ctm_ref=hod_hp_hot_fav_n_3
PC端的先研究了。。这个是在Q群里(320349384)看的,突然来了兴趣,所以记录下。