许多python解析器,比如lxml,pyquery不知道哪个元素是display:none,.text()函数经常在<script>中得到注释或其他东西,等等。
如下所示:
<tr class="" rel="21261811">
<td class="leftborder timestamp" rel="1451972762"><span class="updatets ">
14secs</span></td>
<td><span><style>
.yc_S{display:none}
.qDiU{display:inline}
.VXrU{display:none}
.JoAO{display:inline}
.DEIS{display:none}
.p6YU{display:inline}
</style><span style="display:none">132</span><div style="display:none">132</div><span class="95">189</span><span class="yc_S">243</span><div style="display:none">243</div>.<span class="DEIS">70</span><div style="display:none">70</div><span></span><span class="VXrU">208</span><span></span><span style="display: inline">219</span><span style="display: inline">.</span><span style="display:none">131</span><span class="VXrU">131</span><span style="display: inline">210</span><span class="115">.</span><span style="display: inline">153</span></span></td>
<td>
10000</td>
<td style="text-align:left" rel="mx"><span class="country" style="white-space:nowrap;">
<img src=" style="width: 16px; height: 11px; margin-right: 5px;" class="flags-mx" alt="flag ">Mexico</span>
</td>
<td> <div class="progress-indicator" style="width: 114px" value="1839" levels="speed" rel="1839">
<div class="indicator" style="width: 82%; background-color: rgb(0, 173, 173)"></div>
</div>
</td>
<td>
<div class="progress-indicator " style="width: 114px" title="" rel="271" value="271" levels="speed">
<div class="indicator" style="width: 95%; background-color: rgb(0, 173, 173)"></div>
</div>
</td>
<td>socks4/5</td>
<td nowrap="">High +KA</td>
</tr>$('tr').text()输出应该是lxml或pyquery中一个IP address.But丑陋的结果。(实际上Jquery中的$('tr').text()也无法获得IP,需要一些Jquery basic filter,而lxml或pyquery不支持)
现在,我必须使用selenium内置选择器来避免上述问题。但我想找到一个解决这个问题的终极方法。使用Jquery解析html的方式。
经过一些搜索,我只发现pyv8可以在python中使用javascript。
我想使用幻影代理获得html,并让jquery来处理它。
但是pyv8的文档太少了,我听不懂。
欢迎任何例子或其他解决方案,谢谢!
发布于 2016-01-12 02:17:47
现在,我构建了一个支持jquery的幻影代理。流动情况如下:
更多细节可以看到phantomjs inject jquery。
但实际上,它并不是在python中运行jquery,而是依赖外部帮助。
这是目前我能用的最好的解决方案。欢迎来到另一种方法。
https://stackoverflow.com/questions/34605467
复制相似问题