2

IP:PORT のリストが html にあり、findall を使用してすべての IP を検索すると、IP が一意であるため、すべての IP のリストが取得されます。一部のポートは同じであり、100 個の IP と 87 個のポートのみのリストを例として取得します。繰り返しポートを持つすべてのポートを見つける方法は?

proxies = re.findall("[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}",html)

ports = re.findall("[0-9]{1,3}\,[0-9]{1,3}\,[0-9]{1,3}\,[0-9]{1,3}",html)
#ports are coded to looks like this 47,46,47,46

print len(proxies)
print len(ports)
4

2 に答える 2

2

ソースファイルを見ないと、いくつかの基本的なポイントしかわかりません。

  • ポート番号は 3 桁に制限されていないため、999 を超えるポートは除外しています
  • ポート番号は 4 つのポートのリストとしてのみ表示されますか? 形式は のリストであると言いましたがIP:PORT、それはあなたがチェックしているものではありません。

編集:

ページのソースをもっと注意深く見てください。4 つのポート番号を持たないエントリがあります。

<tr>
    <td class="t_ip">151.9.233.6</td>
    <td class="t_port">50,42</td>
    <td class="t_country"><img src="/images/flags/it.png" alt="it" />Italy</td>
    <td class="t_anonymity">

            High

    </td>
    <td class="t_https">-</td>
    <td class="t_checked">00:02:16</td>
    <td class="t_check">
        <a href="" class="a_check" >check</a>
    </td>
</tr>

class="t_ip"また、その要素の内容を確認しclass="t_port"て取得する方がはるかに簡単なようです。

<td class="t_ip">(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})</td>
<td class="t_port">((\d,?)+)</td>

注: IP アドレス式は、無効な IP アドレスに一致します。

于 2011-06-09T20:07:51.077 に答える
0

これがあまりにも役立つかどうかはわかりませんが、別のオプションです:

txt = """
<tr>
    <td class="t_ip">151.9.233.6</td>
    <td class="t_port">50,42</td>
    <td class="t_country"><img src="/images/flags/it.png" alt="it" />Italy</td>
    <td class="t_anonymity">

            High

    </td>
    <td class="t_https">-</td>
    <td class="t_checked">00:02:16</td>
    <td class="t_check">
        <a href="" class="a_check" >check</a>
    </td>
</tr>    
"""

txt = [line.strip() for line in txt.split('\n')]

#clstaglen = len('</td>') => 5
getVals = lambda startTxt: [line[len(startTxt):len(line)-5] for line in txt if line.startswith(startTxt)]

print getVals('<td class="t_ip">')
print getVals('<td class="t_port">')
于 2011-06-09T20:49:14.957 に答える