python爬取免費代理並驗證代理是否可用

分享一個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爬取免費代理內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: