首先,我想提前感谢所有人,我意识到这可能是一个相当基本的问题,但是经过几个小时没有结果我决定伸手去寻求帮助。
我正在制作一个小脚本,最终将成为一个更大,更多部分的程序的一部分(希望大声笑)。基本上,它查询hidemyass.com以获取代理列表(基于用户输入),然后将所述列表保存到临时文件中,以便在下一步中进行ping和验证。 看起来很简单吧?
现在我的问题......
当我发出请求并查看html响应源时,代理IP地址已经被分割得很奇怪了。
例如
<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
编辑 - 忘了提及我正在使用python,并且只有很少的javascript / html经验(我假设拆分是用java完成的)
答案 0 :(得分:1)
他们特意试图阻止你这样做 (正如我在blog上所述)
您可以向他们询问API,或者您可以尝试使用CSS引擎来确定将显示哪些元素。
答案 1 :(得分:1)
#!/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)