首先,我想事先感谢每个人,我意识到这可能是一个相当基本的问题,然而,在许多小时没有结果之后,我决定伸出援助之手,寻求帮助。
我正在编写一个小脚本,这个脚本最终将成为一个大得多的程序(希望是lol)的一部分。基本上,它查询hidemyass.com的代理列表(基于用户输入),然后将所述列表保存到一个临时文件中,以便在下一步中进行点击和验证。看起来很简单,对吧?
现在我的问题..。
当我提出请求并查看html响应源时,代理ip地址已经被分割为所有wierd。
例如:
<br>
.QJZ-{display:none}<br>
.dA6C-{display:inline}<br>
.h0UB-{display:none}<br>
.HOns-{display:inline}<br>
<br>
</style><div style="display:none">1</div><span></span><span style="display:none">99</span><span class="QJZ-">99</span><div style="display:none">99</div>201<span style="display: inline">.</span><span class="QJZ-">9</span><div style="display:none">9</div><div style="display:none">10</div><span style="display:none">80</span><span class="QJZ-">80</span><span style="display:none">140</span><span class="QJZ-">140</span><span style="display:none">149</span><span class="h0UB">149</span><div style="display:none">149</div><span style="display:none">161</span><span class="h0UB">161</span><span></span><span style="display:none">190</span>210<div style="display:none">217</div><span class="h0UB">234</span><span class="243">.</span><span class="h0UB">6我的问题是,我怎么才能把我的代码读成ip地址呢?(这不是完整的html,我剪掉了,以缩短我的问题,因为它已经很大了)
再次感谢,
L8nit3tr0ubl3
编辑-忘记提到im与python一起工作,并且很少有javascript/html的经验(im假设拆分是用java完成的)
发布于 2013-09-17 19:02:03
他们特别想阻止你这么做。
(正如我在我的博客上描述的那样)
您可以要求他们提供一个API,或者您可以尝试使用CSS引擎来确定将显示哪些元素。
发布于 2013-09-18 14:31:34
#!/usr/bin/python
#-*- encoding: Utf-8 -*-
from requests import get
from re import sub
from sys import stdout
html = get('http://www.hidemyass.com/proxy-list/').content
html = html.split('<table id="listtable"')[1].split('</table')[0]
html = html.split('<tr')[2:]
checkClass = lambda x: x.group(2) if x.group(1) not in classesBad else ''
for tr in html:
css = tr.split('<style>\n')[1].split('\n<')[0].split('\n')
classesBad = [rule[1:5] for rule in css if 'display:none' in rule]
ip = tr.split('</style>')[1].split('</span></td>')[0]
ip = sub('<(?:span|div) style="display:none">.+?</(?:span|div)>', '', ip)
ip = sub('<span style="display: inline">(.+?)</span>', r'\1', ip)
ip = sub('<span class="(.+?)">(.+?)</span>', checkClass, ip)
ip = ip.replace('<span></span>', '')
port = tr.split('<td>\n')[1].split('<')[0]
protocol = tr.split(' \n <td>')[1].split('<')[0].lower()
print '%s://%s:%s/' % (protocol, ip, port)https://stackoverflow.com/questions/18856926
复制相似问题