<tr>
<td>
24.143.198.188
<script type="text/javascript">
document.write(":"+x+f)
</script>
:80
</td>
<td>HTTP</td>
<td>250,890,890</td>
<td>United States</td>
</tr>
我想取出其IP和端口号;主要是为了提取http://www.cnproxy.com/proxy1.html这个网页上的代理服务器
24.143.198.188:80
37.57.20.143:3128
37.59.48.180:8118

解决方案 »

  1.   

    这不是简但的正则就可完成的
    比如
    <tr><td>77.37.134.58<SCRIPT type=text/javascript>document.write(":"+z+c+a+x)</SCRIPT></td><td>HTTP</td><td>188,907,922</td><td>Russia</td></tr>
    77.37.134.58 是服务器ip
    z+c+a+x 才是端口号,需要计算出真实值。
    而这些 js 变量是在前面的
    <SCRIPT type="text/javascript">
    z="3";m="4";a="2";l="9";f="0";b="5";i="7";w="6";x="8";c="1";</SCRIPT>
    中赋值的
      

  2.   

    那我再看看,我是看到python中有实现这个功能,想试试php能做一个不。
    def build_list_urls_6(page=3):
    page=page+1
    ret=[]
    for i in range(1,page):
    ret.append('http://www.cnproxy.com/proxy%(num)01d.html'%{'num':i})
    return retdef parse_page_6(html=''):
        matches=re.findall(r'''<tr>
            <td>([^&]+)                     #ip
            &#8204&#8205
            \:([^<]+)                       #port
            </td>
            <td>HTTP</td>
            <td>[^<]+</td>
            <td>([^<]+)</td>                #area
            </tr>''',html,re.VERBOSE)
        ret=[]
        for match in matches:
            ip=match[0]
            port=match[1]
            type=-1          #该网站未提供代理服务器类型
            area=match[2]
            if indebug:print '6',ip,port,type,area
            area=unicode(area, 'cp936') 
            area=area.encode('utf8') 
            ret.append([ip,port,type,area]) return ret
      

  3.   

    但他的端口(port)取得也不对!
      

  4.   

     function parsePort($str)
        {
            $str = str_replace('document.write(":"', '', $str);
            $str = str_replace(')', '', $str);
            $str = str_replace('+x', '8', $str);
            $str = str_replace('+f', '0', $str);
            $str = str_replace('+z', '3', $str);
            $str = str_replace('+c','1', $str);
            $str = str_replace('+a','2', $str);
            $str = str_replace('+i','3', $str);
            $str = str_replace('+l','9', $str);
            return ':'.$str;
        }谢谢版主大人,解决了
      

  5.   

    那恭喜你了不过你还要注意检查一下,每一页的 
    <SCRIPT type="text/javascript">
    z="3";m="4";a="2";l="9";f="0";b="5";i="7";w="6";x="8";c="1";</SCRIPT>
    是否都一样