匹配端口号

时间:2015-11-19 09:30:29

标签: python regex

我正在尝试匹配来自html页面的<span>标记中的端口号:

<span class="tbBottomLine" style="width:50px;">
                8080
        </span>
<span class = "tbBottomLine" style = "width: 50px;">
            80
    </ span>
<span class = "tbBottomLine" style = "width: 50px;">
            3124
    </ span>
<span class = "tbBottomLine" style = "width: 50px;">
            1142
    </ span>

脚本:

import urllib2
import re

h = urllib2.urlopen('http://www.proxy360.cn/Region/Brazil')

html = h.read()

parser_port = '<span.*>\s*([0-9]){2,}\s*</span>'

p = re.compile(parser_port)

list_port = p.findall(html)

print list_port

但是我得到了这个输出:

['8', '8', '0', '0', '0', '8', '8', '0', '0', '8', '8', '8', '8', '8', '8', '8', '8', '0']

我需要它来匹配8080例如。

2 个答案:

答案 0 :(得分:0)

如果你想要从页面上拉出端口。

parser_port = '<span.*>\s*([0-9]{2,})+\s*</span>'

你想要一个或多个长度至少为2的字符(+号)({2,}。但是仍然不清楚用例是什么。

答案 1 :(得分:0)

您正在重复群组focusTarget: 'category',。用最后一个值覆盖。

相反,重复组内的子模式

([0-9]){2,}

<强>代码

<span[^>]*>\s*([0-9]{2,})\s*</\s*span>