去哪儿 m 版酒店价格获取,如何通过 css 计算元素的绝对定位

2017-04-12 11:53:06 +08:00
 dbj1991

去哪儿价格返回的是 html ,通过 css 定位,显示出价格。

<div class="qt-light-orange qt-font20 qunar_mix">
      <span class="price" style="width:33px">
      <i class="qm18d6dd7e">2</i> 
      <i class="qmacf0943b">2</i> 
      <i class="qm11251921">2</i> 
      <i class="qm5c6d111c">5</i> 
      <i class="qmbd09efa2">8</i></span>
    </div>

css 如下:

.qunar_mix span.price i {
    position: absolute;
    left: 0;
    bottom: -1px;
    font-style: normal;
    background: #f0f0f0;
    height: 100%;
}
.qunar_mix span.price i.qm5c6d111c{left: -100px; margin-left:300px;background:none;}
.qunar_mix span.price i.qmcf5711c8{left: -100px; margin-left:22px; padding-left:22px; background:none;}
.qunar_mix span.price i.qmbd09efa2{left: 0px; margin-left:11px; padding-left:11px; background:none;}
.qunar_mix span.price i.qm18d6dd7e{left: -33px; margin-left:11px; padding-left:33px; background:none;}
.qunar_mix span.price i.qm11251921{left: -22px; margin-left:11px; padding-left:11px; background:none;}
.qunar_mix span.price i.qmca340bd1{left: 11px; margin-left:11px; padding-left:11px; background:none;}
.qunar_mix span.price i.qmc1c11156{left: 11px; margin-left:22px; padding-left:11px; background:none;}
.qunar_mix span.price i.qmacf0943b{left: -100px; padding-left:300px;background:none;}

最终显示的价格是 228 ,如何通过 css 来计算得到的价格呢。能想到的就是通过 phantomjs 渲染后截图,然后图片识别可以,但是效率不高

2967 次点击
所在节点    Python
9 条回复
coo
2017-04-12 13:09:24 +08:00
去哪儿这招有点狠 ...
em2046
2017-04-12 13:20:56 +08:00
不显示.qunar_mix span.price i.qm5c6d111c{left: -100px; margin-left:300px;background:none;}
200

无 html.qunar_mix span.price i.qmcf5711c8{left: -100px; margin-left:22px; padding-left:22px; background:none;}
-56

显示.qunar_mix span.price i.qmbd09efa2{left: 0px; margin-left:11px; padding-left:11px; background:none;}
22

显示.qunar_mix span.price i.qm18d6dd7e{left: -33px; margin-left:11px; padding-left:33px; background:none;}
11

显示.qunar_mix span.price i.qm11251921{left: -22px; margin-left:11px; padding-left:11px; background:none;}
0

无 html.qunar_mix span.price i.qmca340bd1{left: 11px; margin-left:11px; padding-left:11px; background:none;}
33

无 html.qunar_mix span.price i.qmc1c11156{left: 11px; margin-left:22px; padding-left:11px; background:none;}
44

不显示.qunar_mix span.price i.qmacf0943b{left: -100px; padding-left:300px;background:none;}
200

加法
然后去除 html 中没有的
然后去除过界的
然后根据加的结果数值排序。
dbj1991
2017-04-12 14:26:16 +08:00
@em2046 有效,感谢
leeg810312
2017-04-12 15:07:18 +08:00
不明觉厉,好奇怎么生成这样的 css
yaoxinghui
2017-04-12 22:22:09 +08:00
去哪儿我也抓过,不需要这样的,它的价格隐藏在返回的 html 的某个属性里,你认真观察下就知道了
dbj1991
2017-04-12 22:27:19 +08:00
@yaoxinghui <div class="qt-light-orange qt-font20 qunar_mix">
<span class="price" style="width:33px">
<i class="qm18d6dd7e">2</i>
<i class="qmacf0943b">2</i>
<i class="qm11251921">2</i>
<i class="qm5c6d111c">5</i>
<i class="qmbd09efa2">8</i></span>
</div> 这就是返回的 html ,差不多半年前我也看过,是可以直接看到价格的,最近应该改了
kfll
2017-04-13 00:24:32 +08:00
…用读屏软件的遇到这些真是…
alwayshere
2017-04-13 11:40:56 +08:00
它不怕被搜索引擎降权么
justfun
2017-04-13 13:30:57 +08:00
反爬的丧心病狂啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/354305

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX