获取网页中IP资源

1 篇文章 0 订阅
1 篇文章 0 订阅

简介

应对增量/离线爬虫业务场景,其特点是对时间要求低,并发大,IP代理资源需求多,如果减少成本是重点问题,调查发现网上许多免费的IP代理资源,可以运用爬虫技术适当的采集、验证、使用。但是免费资源性能低,经过验证之后可用资源少,需要大量数据源配置,但带来了解析问题,如何运用适当的解析方式,统一清洗可靠的IP资源,是一个问题。

解决方案

一、采用机器学习文本分类进行:精度不足,训练成本高
二、采用多重正则识别:准确度稍差,对反屏蔽支持较低

多重正则识别网页中的IP资源

# -*- coding:utf-8 -*-

import re


def get_html(h_str):
       txt = h_str
    m = re.findall(r'<.+?>', txt, re.M | re.I)
    for i in m:
        if "none" in i:
            m1 = re.findall(r'' + i + '(.*?)</', txt, re.M | re.I)
            print("m1:", m1)
            for x in m1:
                if x == '':
                    m1.remove(x)

            for j in m1:
                print("m1:", i + j)
                txt = txt.replace(i + j, "")

    result = re.compile(r'<.+?>', re.S).sub('', txt)
    res = re.findall(r"\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b:[0-9]{1,5}", result)
    ip_list = []
    if res == []:
        res = re.findall(r"\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b", result)
        for i in res:
            m1 = re.findall(r'^.*?([0-9]{2,5})', result.split(i)[1], re.M | re.I)[0]
            ip_list.append(str(i) + ":" + str(m1))
    else:
        ip_list = res
    return ip_list


if __name__ == "__main__":
    h_str = '''<tbody>
                        <tr>
                            <td>125.62.193.209:83</td>
                            <td>高匿名ip代理</td>
                            <td>HTTP,HTTPS</td>
                            <td>中国 北京 北京 UCloud/联通/电信 代理ip</td>
                            <td>6.73</td>
                            <td>27天 13小时 50分钟 3秒</td>
                            <td>2019年10月22日 20:09</td>
                            <td>6992</td>
                        </tr>
                         <tr>
                            <td>
                                <p style="display:block; ">123.62.193.209:83</p><div style="display:none;">2</div>
                            </td>
                            <td>高匿名ip代理</td>
                            <td>HTTP,HTTPS</td>
                            <td>中国 北京 北京 UCloud/联通/电信 代理ip</td>
                            <td>6.73</td>
                            <td>27天 13小时 50分钟 3秒</td>
                            <td>2019年10月22日 20:09</td>
                            <td>6992</td>
                        </tr>
                </tbody>
    '''
    print(get_html(h_str))

输出结果

['125.62.193.209:83', '123.62.193.209:83']
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值