国内代理ip的爬取,构建ip代理池@2

免费代理ip的网站,但是结构要是改了的话,自己查看相应的网站结构,自己构造,实在不行的给,和本人联系,然后要是有更多的人知道,更多的免费ip请告知,然后看看能不能爬取,相应的代理ip。

还有就是本人实操作,直接访问的,明面上的代理ip(免费版本最好的是站大爷,但是它的端口号为图片形式的验证码,比较难爬取,所以上面没有,但是能找到的直接提取,不包括注册的大概都在上面。)

代码提取:https://pan.baidu.com/s/1UNZGrPfXBCB15IPx8fUxyw
提取码:3ibj 


百度网盘微信扫描

代码里面没有需要的包,需要自己单独引入,里面没有相应的三方库文件。(博客上所有的代码)

 

有时效检测,和多站抓取的形式的ip代理ip的数据库,redis+flask构建ip代理池.暂时是有效的ip免费代理,速度可想而知,稳定性可想而知,看你情况而定。


    def crawl_yundaili(self):
        for page in range(1, 4):
            start_url = 'http://www.ip3366.net/free/?stype={}'.format(page)
            html = get_page(start_url)
            ip_adress = re.compile('<tr>.*?<td>(.*?)</td>.*?<td>(.*?)</td>')
            # \s* 匹配空格,起到换行作用
            re_ip_adress = ip_adress.findall(str(html))
            for adress, port in re_ip_adress:
                result = adress + ':' + port
                yield result.replace(' ', '')

    def crawl_kuaidaili(self):
        for page in range(1, 4):
            # 国内高匿代理
            start_url = 'https://www.kuaidaili.com/free/inha/{}/'.format(page)
            html = get_page(start_url)
            ip_adress = re.compile(
                '<td data-title="IP">(.*)</td>\s*<td data-title="PORT">(\w+)</td>'
            )
            re_ip_adress = ip_adress.findall(str(html))
            for adress, port in re_ip_adress:
                result = adress + ':' + port
                yield result.replace(' ', '')

    def crawl_xicidaili(self):
        for page in range(1, 4):
            start_url = 'http://www.xicidaili.com/nn/{}'.format(page)
            html = get_page(start_url)
            ip_adress = re.compile(
                '<td class="country"><img src="http://fs.xicidaili.com/images/flag/cn.png" alt="Cn" /></td>\s*<td>(.*?)</td>\s*<td>(.*?)</td>'
            )
            # \s* 匹配空格,起到换行作用
            re_ip_adress = ip_adress.findall(str(html))
            for adress, port in re_ip_adress:
                result = adress + ':' + port
                yield result.replace(' ', '')

    def crawl_daili66(self, page_count=4):
        start_url = 'http://www.66ip.cn/{}.html'
        urls = [start_url.format(page) for page in range(1, page_count + 1)]
        for url in urls:
            print('Crawling', url)
            html = get_page(url)
            if html:
                doc = pq(html)
                trs = doc('.containerbox table tr:gt(0)').items()
                for tr in trs:
                    ip = tr.find('td:nth-child(1)').text()
                    port = tr.find('td:nth-child(2)').text()
                    yield ':'.join([ip, port])

    def crawl_data5u(self):
        for i in ['gngn', 'gwgn']:
            start_url = 'http://www.data5u.com/free/{}/index.shtml'.format(i)
            html = get_page(start_url)
            ip_adress = re.compile(
                ' <ul class="l2">\s*<span><li>(.*?)</li></span>\s*<span style="width: 100px;"><li class=".*">(.*?)</li></span>'
            )
            # \s * 匹配空格,起到换行作用
            re_ip_adress = ip_adress.findall(str(html))
            for adress, port in re_ip_adress:
                result = adress + ':' + port
                yield result.replace(' ', '')

    def crawl_jisudaili(self):
        for i in range(1, 11):
            start_url = 'http://www.superfastip.com/welcome/freeip/{}'.format(i)
            html = get_page(start_url)
            ip_adress = re.compile('<tr.*?>\s*<td>(.*?)</td>\s*<td>(.*?)</td>')
            # \s* 匹配空格,起到换行作用
            re_ip_adress = ip_adress.findall(str(html))
            for adress, port in re_ip_adress:
                result = adress + ':' + port
                yield result.replace(' ', '')

    def crawl_89ip(self):
        for i in range(1, 11):
            start_url = 'http://www.89ip.cn/index_{}.html'.format(i)
            html = get_page(start_url)
            ip_adress = re.compile('<tr>.*?<td>\n\t\t\t(.*?)\t\t</td>\s*<td>\n\t\t\t(.*?)\t\t</td>')
            # \s* 匹配空格,起到换行作用
            re_ip_adress = ip_adress.findall(str(html))
            for adress, port in re_ip_adress:
                result = adress + ':' + port
                yield result.replace(' ', '')

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值