1

これはかなり基本的な質問である可能性が高いことは承知していますが、何時間も結果が得られなかった後、手を差し伸べて助けを求めることにしました。

私は小さなスクリプトに取り組んでおり、最終的にははるかに大きなマルチパート プログラムの一部になります (できれば笑)。基本的には、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で行われていると仮定しています)

4

2 に答える 2

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)
于 2013-09-18T14:31:34.810 に答える