最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python爬蟲(chóng)實(shí)現(xiàn)搭建代理ip池

 更新時(shí)間:2022年06月21日 17:06:15   作者:清&輕  
這篇文章主要介紹了Python爬蟲(chóng)實(shí)現(xiàn)搭建代理ip池,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下,希望對(duì)你的工作有所幫助

前言

在使用爬蟲(chóng)的時(shí)候,很多網(wǎng)站都有一定的反爬措施,甚至在爬取大量的數(shù)據(jù)或者頻繁地訪問(wèn)該網(wǎng)站多次時(shí)還可能面臨ip被禁,所以這個(gè)時(shí)候我們通常就可以找一些代理ip來(lái)繼續(xù)爬蟲(chóng)測(cè)試。

下面就開(kāi)始來(lái)簡(jiǎn)單地介紹一下爬取免費(fèi)的代理ip來(lái)搭建自己的代理ip池:本次爬取免費(fèi)ip代理的網(wǎng)址:http://www.ip3366.net/free/

提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

一、User-Agent

在發(fā)送請(qǐng)求的時(shí)候,通常都會(huì)做一個(gè)簡(jiǎn)單的反爬。這時(shí)可以用fake_useragent模塊來(lái)設(shè)置一個(gè)請(qǐng)求頭,用來(lái)進(jìn)行偽裝成瀏覽器,下面兩種方法都可以。

from fake_useragent import UserAgent
headers = {
        # 'User-Agent': UserAgent().random #常見(jiàn)瀏覽器的請(qǐng)求頭偽裝(如:火狐,谷歌)
        'User-Agent': UserAgent().Chrome #谷歌瀏覽器
    }

在這里插入圖片描述

二、發(fā)送請(qǐng)求

response = requests.get(url='http://www.ip3366.net/free/', headers=request_header())
        # text = response.text.encode('ISO-8859-1')
        # print(text.decode('gbk'))

三、解析數(shù)據(jù)

我們只需要解析出ip、port即可。

在這里插入圖片描述

在這里插入圖片描述

使用xpath解析(個(gè)人很喜歡用)(當(dāng)然還有很多的解析方法,如:正則,css選擇器,BeautifulSoup等等)。

	#使用xpath解析,提取出數(shù)據(jù)ip,端口
        html = etree.HTML(response.text)
        tr_list = html.xpath('/html/body/div[2]/div/div[2]/table/tbody/tr')
        for td in tr_list:
            ip_ = td.xpath('./td[1]/text()')[0] #ip
            port_ = td.xpath('./td[2]/text()')[0]  #端口
            proxy = ip_ + ':' + port_   #115.218.5.5:9000

四、構(gòu)建ip代理池,檢測(cè)ip是否可用

#構(gòu)建代理ip
	proxy = ip + ':' + port
	proxies = {
        "http": "http://" + proxy,
        "https": "http://" + proxy,
        # "http": proxy,
        # "https": proxy,
    }
    try:
        response = requests.get(url='https://www.baidu.com/',headers=request_header(),proxies=proxies,timeout=1) #設(shè)置timeout,使響應(yīng)等待1s
        response.close()
        if response.status_code == 200:
            print(proxy, '\033[31m可用\033[0m')
        else:
            print(proxy, '不可用')
    except:
        print(proxy,'請(qǐng)求異常')

五、完整代碼

import requests                         #導(dǎo)入模塊
from lxml import etree
from fake_useragent import UserAgent
#簡(jiǎn)單的反爬,設(shè)置一個(gè)請(qǐng)求頭來(lái)偽裝成瀏覽器
def request_header():
    headers = {
        # 'User-Agent': UserAgent().random #常見(jiàn)瀏覽器的請(qǐng)求頭偽裝(如:火狐,谷歌)
        'User-Agent': UserAgent().Chrome #谷歌瀏覽器
    }
    return headers
'''
創(chuàng)建兩個(gè)列表用來(lái)存放代理ip
'''
all_ip_list = []  #用于存放從網(wǎng)站上抓取到的ip
usable_ip_list = [] #用于存放通過(guò)檢測(cè)ip后是否可以使用

#發(fā)送請(qǐng)求,獲得響應(yīng)
def send_request():
    #爬取7頁(yè),可自行修改
    for i in range(1,8): 
        print(f'正在抓取第{i}頁(yè)……')
        response = requests.get(url=f'http://www.ip3366.net/free/?page={i}', headers=request_header())
        text = response.text.encode('ISO-8859-1')
        # print(text.decode('gbk'))
        #使用xpath解析,提取出數(shù)據(jù)ip,端口
        html = etree.HTML(text)
        tr_list = html.xpath('/html/body/div[2]/div/div[2]/table/tbody/tr')
        for td in tr_list:
            ip_ = td.xpath('./td[1]/text()')[0] #ip
            port_ = td.xpath('./td[2]/text()')[0]  #端口
            proxy = ip_ + ':' + port_   #115.218.5.5:9000
            all_ip_list.append(proxy)
            test_ip(proxy)      #開(kāi)始檢測(cè)獲取到的ip是否可以使用
    print('抓取完成!')
    print(f'抓取到的ip個(gè)數(shù)為:{len(all_ip_list)}')
    print(f'可以使用的ip個(gè)數(shù)為:{len(usable_ip_list)}')
    print('分別有:\n', usable_ip_list)
#檢測(cè)ip是否可以使用
def test_ip(proxy):
    #構(gòu)建代理ip
    proxies = {
        "http": "http://" + proxy,
        "https": "http://" + proxy,
        # "http": proxy,
        # "https": proxy,
    }
    try:
        response = requests.get(url='https://www.baidu.com/',headers=request_header(),proxies=proxies,timeout=1) #設(shè)置timeout,使響應(yīng)等待1s
        response.close()
        if response.status_code == 200:
            usable_ip_list.append(proxy)
            print(proxy, '\033[31m可用\033[0m')
        else:
            print(proxy, '不可用')
    except:
        print(proxy,'請(qǐng)求異常')
if __name__ == '__main__':
    send_request()

總結(jié)

到此這篇關(guān)于Python爬蟲(chóng)實(shí)現(xiàn)搭建代理ip池的文章就介紹到這了,更多相關(guān)Python代理ip池內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python對(duì)視頻畫(huà)框標(biāo)記后保存的方法

    python對(duì)視頻畫(huà)框標(biāo)記后保存的方法

    今天小編就為大家分享一篇python對(duì)視頻畫(huà)框標(biāo)記后保存的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Python鏈表排序相關(guān)問(wèn)題解法示例

    Python鏈表排序相關(guān)問(wèn)題解法示例

    這篇文章主要為大家介紹了Python鏈表排序相關(guān)問(wèn)題解法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • python語(yǔ)言中pandas字符串分割str.split()函數(shù)

    python語(yǔ)言中pandas字符串分割str.split()函數(shù)

    分列在我們?nèi)粘9ぷ髦薪?jīng)常用到,從各種系統(tǒng)中導(dǎo)出的什么訂單號(hào)、名稱、日期很多都是復(fù)合組成的,這些列在匹配、合并時(shí)沒(méi)有辦法使用,我們經(jīng)常需要將她們分開(kāi),下面這篇文章主要給大家介紹了關(guān)于python語(yǔ)言中pandas字符串分割str.split()函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • Flask如何獲取用戶的ip,查詢用戶的登錄次數(shù),并且封ip

    Flask如何獲取用戶的ip,查詢用戶的登錄次數(shù),并且封ip

    這篇文章主要介紹了Flask如何獲取用戶的ip,查詢用戶的登錄次數(shù),并且封ip問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Python腳本操作Excel實(shí)現(xiàn)批量替換功能

    Python腳本操作Excel實(shí)現(xiàn)批量替換功能

    這篇文章主要介紹了Python腳本操作Excel實(shí)現(xiàn)批量替換功能,本文使用的是Openpyxl工具,通過(guò)實(shí)例截圖給大家講解的非常詳細(xì),需要的朋友可以參考下
    2019-11-11
  • 一步步教你用python連接oracle數(shù)據(jù)庫(kù)

    一步步教你用python連接oracle數(shù)據(jù)庫(kù)

    oracle作為最強(qiáng)大的數(shù)據(jù)庫(kù),Python也提供了足夠的支持。不過(guò)與其他數(shù)據(jù)庫(kù)略有不同,下面這篇文章主要給大家介紹了關(guān)于如何使用python連接oracle數(shù)據(jù)庫(kù)的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • 使用Flask創(chuàng)建簡(jiǎn)單的圖片上傳站點(diǎn)的流程步驟

    使用Flask創(chuàng)建簡(jiǎn)單的圖片上傳站點(diǎn)的流程步驟

    在網(wǎng)絡(luò)應(yīng)用程序中,實(shí)現(xiàn)圖片上傳功能是一項(xiàng)常見(jiàn)的需求,Flask框架提供了簡(jiǎn)單而靈活的工具,使得構(gòu)建這樣的功能變得相對(duì)簡(jiǎn)單,本文將介紹如何使用Flask框架創(chuàng)建一個(gè)簡(jiǎn)單的圖片上傳站點(diǎn),以及其中涉及的關(guān)鍵技術(shù)和步驟,需要的朋友可以參考下
    2024-05-05
  • 實(shí)例講解Python中整數(shù)的最大值輸出

    實(shí)例講解Python中整數(shù)的最大值輸出

    在本篇文章里小編給大家分享了關(guān)于Python中整數(shù)的最大值輸出的實(shí)例內(nèi)容,以及相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。
    2019-03-03
  • Python使用BeautifulSoup爬取網(wǎng)頁(yè)數(shù)據(jù)的操作步驟

    Python使用BeautifulSoup爬取網(wǎng)頁(yè)數(shù)據(jù)的操作步驟

    在網(wǎng)絡(luò)時(shí)代,數(shù)據(jù)是最寶貴的資源之一,而爬蟲(chóng)技術(shù)就是一種獲取數(shù)據(jù)的重要手段,Python 作為一門(mén)高效、易學(xué)、易用的編程語(yǔ)言,自然成為了爬蟲(chóng)技術(shù)的首選語(yǔ)言之一,本文將介紹如何使用 BeautifulSoup 爬取網(wǎng)頁(yè)數(shù)據(jù),并提供詳細(xì)的代碼和注釋,幫助讀者快速上手
    2023-11-11
  • 適合Python項(xiàng)目的五大SQL連接器

    適合Python項(xiàng)目的五大SQL連接器

    這篇文章,將要介紹當(dāng)前流行的、適合大多數(shù)Python程序員的、五大Python SQL數(shù)據(jù)庫(kù)連接器,并討論它們安裝和各種的優(yōu)缺點(diǎn)。需要的噴朋友可以參考下面文章的具體內(nèi)容
    2021-09-09

最新評(píng)論

安吉县| 民乐县| 宁武县| 湛江市| 大港区| 磐石市| 隆林| 郯城县| 西平县| 鄂州市| 浙江省| 赤峰市| 介休市| 桂林市| 盘锦市| 西充县| 教育| 靖安县| 靖远县| 乐清市| 梁河县| 隆尧县| 岳西县| 凤冈县| 汉中市| 专栏| 辽宁省| 浏阳市| 邻水| 衡东县| 河间市| 米林县| 临沧市| 南川市| 竹山县| 湖口县| 鲁甸县| 买车| 保德县| 博乐市| 汾西县|