我有IP列表:PORT in 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)
答案 0 :(得分:2)
如果没有看到源文件,我只能提出一些基本要点。
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地址。
答案 1 :(得分: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">')