Python获取免费的可用代理

Python获取免费的可用代理

在使用爬虫多次爬取同一网站时,经常会被网站的ip反爬虫机制给禁掉,这时就可以通过使用代理来解决。目前网上有很多提供最新免费代理列表的网站,这些列表里很多的代理主机是可用的,但是也有一些是不可用的,因此需要进一步筛选。利用Python可以很方便地筛选出可用的代理列表。

以提供免费代理信息的网站IPCN 国家地区免费代理为例,这里给出一个爬取此网站上提供的代理信息并筛选可用代理主机的程序。主要用到requests和lxml,具体代码为:

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

import requests
from lxml import etree


def get_proxies_from_site():
    url = 'http://proxy.ipcn.org/country/'
    xpath = '/html/body/div[last()]/table[last()]/tr/td/text()'

    r = requests.get(url)
    tree = etree.HTML(r.text)

    results = tree.xpath(xpath)
    proxies = [line.strip() for line in results]

    return proxies

#使用http://lwons.com/wx网页来测试代理主机是否可用
def get_valid_proxies(proxies, count):
    url = 'http://lwons.com/wx'
    results = []
    cur = 0
    for p in proxies:
        proxy = {'http': 'http://' + p}
        succeed = False
        try:
            r = requests.get(url, proxies=proxy)
            if r.text == 'default':
                succeed = True
        except Exception, e:
            print 'error:', p
            succeed = False
        if succeed:
            print 'succeed:', p
            results.append(p)
            cur += 1
            if cur >= count:
                break

if __name__ == '__main__':
    print 'get ' + str(len(get_valid_proxies(get_proxies_from_site(), 20))) + ' proxies'
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,有一些可以用来获取免费代理的库和类。这些库可以帮助你获取免费代理IP地址,以便你在爬虫或其他网络请求中使用。以下是几个常用的免费代理类的示例: 1. `requests`库结合免费代理API: ```python import requests url = 'https://api.getproxylist.com/proxy' response = requests.get(url) if response.status_code == 200: proxy_data = response.json() proxy_ip = proxy_data['ip'] proxy_port = proxy_data['port'] # 使用获取代理IP和端口进行请求 proxies = { 'http': f'http://{proxy_ip}:{proxy_port}', 'https': f'https://{proxy_ip}:{proxy_port}' } response = requests.get('https://www.example.com', proxies=proxies) # 处理响应 else: print('Failed to retrieve proxy.') ``` 在这个示例中,我们使用`requests`库向一个免费代理API发送请求,获取一个免费代理IP和端口。然后,我们可以使用这个代理IP和端口进行实际的请求。 2. `proxyscrape`库: ```python from proxyscrape import create_collector collector = create_collector('my-collector', 'http') proxy = collector.get_proxy() proxy_ip = proxy.host proxy_port = proxy.port # 使用获取代理IP和端口进行请求 proxies = { 'http': f'http://{proxy_ip}:{proxy_port}', 'https': f'https://{proxy_ip}:{proxy_port}' } response = requests.get('https://www.example.com', proxies=proxies) # 处理响应 ``` 这个示例中,我们使用`proxyscrape`库创建了一个代理收集器,并获取了一个代理IP和端口。然后,我们可以使用这个代理IP和端口进行实际的请求。 需要注意的是,免费代理可能不稳定,速度较慢或不可用。在使用免费代理时,你需要自行测试和验证代理可用性,并根据实际情况进行调整和处理。另外,使用代理时请遵守相关法律和服务条款,确保你的行为合法且符合规定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值