欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python爬取免费代理并验证代理是否可用

程序员文章站 2022-06-16 13:11:22
分享一个python脚本,使用代理ip来访问网页,方便抓取数据什么的~并自动验证ip是否可以用什么情况下会用到代理ip?比如你要抓取一个网站数据,该网站有100万条内容,他们做了ip限制,每个ip每小...

分享一个python脚本,使用代理ip来访问网页,方便抓取数据什么的~并自动验证ip是否可以用

什么情况下会用到代理ip?比如你要抓取一个网站数据,该网站有100万条内容,他们做了ip限制,每个ip每小时只能抓1000条,如果单个ip去抓因为受限,需要40天左右才能采集完,如果用了代理ip,不停的切换ip,就可以突破每小时1000条的频率限制,从而提高效率。

脚本开始:

import requests
from lxml import etree
# 获取快代理首页的代理
def get_proxy_list():
    url = "https://www.jxmtjt.com/"
    payload = {}
    headers = {
        "user-agent": "mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/75.0.3770.100 safari/537.36",
        'accept': 'application/json, text/javascript, */*; q=0.01',
    }
    response = requests.request("get", url, headers=headers, data=payload)
    res = []
    _ = etree.html(response.text)
    type_dct = {
        "http": "http://",
        "https": "https://"
    }
    data_list = _.xpath("//tbody/tr")
    for data in data_list:
        ip = data.xpath("./td[1]/text()")[0]
        port = data.xpath("./td[2]/text()")[0]
        type = data.xpath("./td[4]/text()")[0]
        res.append(type_dct[type] + ip + ':' + port)
    return res
# 测试代理
def check(proxy):
    href = 'http://www.baidu.com/'
    if 'https' in proxy:
        proxies = {'https': proxy}
    else:
        proxies = {'http': proxy}
    headers = {
        'user-agent': 'mozilla/5.0 (macintosh; intel mac os x 11_2_2) applewebkit/537.36 (khtml, like gecko) chrome/90.0.4396.0 safari/537.36'
    }
    try:
        r = requests.get(href, proxies=proxies, timeout=5, headers=headers)
        if r.status_code == 200:
            return true
    except:
        return false
if __name__ == '__main__':
    proxy_list = get_proxy_list()
    print(proxy_list)
    for p in proxy_list:
        print(p, check(p))
大家代码复制后,把获取代理ip的网址改一改就可以用了,代码我一直在用,大家也可以cnblogs,百度搜索一下有没有免费的代理ip获取网址~

到此这篇关于python爬取免费代理并验证是否可用的文章就介绍到这了,更多相关python爬取免费代理内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!