欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python爬蟲實戰(zhàn)之制作屬于自己的一個IP代理模塊

 更新時間:2021年06月02日 11:16:38   作者:il_持之以恒_li  
Python爬蟲常常會面臨自己ip地址被封的情況,也許不懂的讀者就只能等ip解封之后再進行接下來的操作了,為什么自己不做一個Python模塊專門用于處理這種情況呢?文中對于讀者開發(fā)Python爬蟲肯定有一定的幫助,希望讀者耐心看下去,需要的朋友可以參考下

一、使用PyChram的正則

首先,小編講的不是爬取ip,而是講了解PyCharm的正則,這里講的正則不是Python的re模塊哈!
而是PyCharm的正則功能,我們在PyChram的界面上按上Ctrl+R,可以發(fā)現,這里出現兩行輸入框

在這里插入圖片描述

現在如果小編想把如下數據轉換成一個字典存儲

在這里插入圖片描述

讀者也許會一個一去改,但是小編只需在上述的那兩個輸入框內,輸入一串字符串即可。

在這里插入圖片描述

只需在第一個輸入框中,輸入(.*) : (.*)
在第二個輸入框中,輸入"$1":"$2",,看看效果如何

在這里插入圖片描述

之后再給兩端分別一個花括號和取一個字典名稱即可。

二、制作一個隨機User-Agent模塊

反爬措施中,有這樣一條,就是服務器會檢查請求的user-agent參數值,如果檢查的結果為python,那么服務器就知道這是爬蟲,為了避免被服務器發(fā)現這是爬蟲,通常user-agent參數值會設置瀏覽器的值,但是爬取一個網址時,每次都需要查看網址network下面的內容,顯得比較繁瑣,為什么不自定義一個隨機獲取user-agent的值模塊呢?這樣既可以減少查看network帶來的繁瑣,同時還可以避免服務器發(fā)現這是同一個user-agent發(fā)起多次請求。
說了這么多,那么具體怎樣實現呢?

在這里插入圖片描述

只需調用隨機模塊random的方法choice()即可,這個方法里面的參數類型時列表類型,具體參考代碼如下:

import random

class useragent(object):

    def getUserAgent(self):
        useragents=[
            'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',
            'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1',
            'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0',
            'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; Tablet PC 2.0; .NET4.0E)',
            'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)',
        ]
        return random.choice(useragents)

這樣我們就可以隨機得到一個user-agent的值了。

三、最終實踐

3.1 爬取快代理上的ip

接下來,就是最終實踐了,制作屬于自己的IP代理模塊。

那么,從哪里獲取IP呢?小編用的是快代理這個網址,網址鏈接為:https://www.kuaidaili.com/free/inha/1/。

怎樣提取IP呢?小編用的是xpath語法

在這里插入圖片描述

參考代碼如下:

import requests
from crawlers.userAgent import useragent  # 導入自己自定義的類,主要作用為隨機取user-agent的值
from lxml import etree

url='https://www.kuaidaili.com/free/inha/1/'
headers={'user-agent':useragent().getUserAgent()}
rsp=requests.get(url=url,headers=headers)
HTML=etree.HTML(rsp.text)
infos=HTML.xpath("http://table[@class='table table-bordered table-striped']/tbody/tr")
for info in infos:
    print(info.xpath('./td[1]/text()'))   # ip
    print(info.xpath('./td[2]/text()'))   # ip對應的端口 列表類型

怎樣爬取多頁呢?分析快代理那個網址,可以發(fā)現https://www.kuaidaili.com/free/inha/{頁數}/ ,花括號里面就是頁數,這個網址總頁數為4038,這里小編只爬取5頁,并且開始頁數?。?,3000)之間的隨機數,但是如果for循環(huán)這個過程,運行結果如下:

在這里插入圖片描述

原來是請求過快的原因,只需在爬取1頁之后,休眠幾秒鐘即可解決。

3.2 驗證爬取到的ip是否可用

這里直接用百度這個網址作為測試網址,主要代碼為:

url='https://www.baidu.com'
headers={'user-agent':useragent().getUserAgent()}
proxies={}   # ip ,這里只是講一下關鍵代碼,沒有給出具體IP
rsp=requests.get(url=url,headers=headers,proxies=proxies,time=0.2)  # timeout為超時時間

只需判斷rsp的狀態(tài)碼為200,如果是,把它添加到一個指定的列表中。

具體參考代碼小編已經上傳到Gitee上,鏈接為:ip代理模塊

當然讀者可用把這個文件保存到python\Lib文件夾下面,這樣就可用隨時隨地導入了。

3.3 實戰(zhàn):利用爬取到的ip訪問CSDN博客網址1000次

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

上述出現那個錯誤,小編上網搜索了一下原因,如下:

在這里插入圖片描述

我想應該是第1種原因,ip被封,我這里沒有設置超時時間,應該不會出現程序請求速度過快。

四、總結

上述那個ip代理模塊還有很多的不足點,比如用它去訪問一些網址時,不管運行多少次,輸出的結果狀態(tài)碼不會時200,這也正常,畢竟免費的ip并不是每個都能用的。如果要說改進的話,就是多爬取幾個不同ip代理網址,去重,這樣的結果肯定會比上述的那個ip代理模塊要好

到此這篇關于python爬蟲實戰(zhàn)之制作屬于自己的一個IP代理模塊的文章就介紹到這了,更多相關Python IP代理模塊內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python超簡單分析評論提取關鍵詞制作精美詞云流程

    Python超簡單分析評論提取關鍵詞制作精美詞云流程

    這篇文章主要介紹了使用Python來分析評論并且提取其中的關鍵詞,用于制作精美詞云的方法,感興趣的朋友來看看吧
    2022-03-03
  • 12個Pandas/NumPy中的加速函數使用總結

    12個Pandas/NumPy中的加速函數使用總結

    在本文中,數據和分析工程師?Kunal?Dhariwal?為我們介紹了?12?種?Numpy?和?Pandas?函數,這些高效的函數會令數據分析更為容易、便捷
    2022-09-09
  • 十分鐘輕松掌握dataframe數據選擇

    十分鐘輕松掌握dataframe數據選擇

    這篇文章主要介紹了十分鐘輕松掌握dataframe數據選擇,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • Python Pickling 和 Unpickling 的區(qū)別

    Python Pickling 和 Unpickling 的區(qū)別

    Python中的Pickling和Unpickling是與數據序列化和反序列化相關的重要概念,本文主要介紹了Python Pickling和Unpickling的區(qū)別,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • python如何調用java類

    python如何調用java類

    在本篇文章里小編給大家分享了關于python調用java類的方法,需要的朋友們可以參考下。
    2020-07-07
  • Python如何測試stdout輸出

    Python如何測試stdout輸出

    這篇文章主要介紹了Python如何測試stdout輸出,幫助大家更好的理解和學習Python,感興趣的朋友可以了解下
    2020-08-08
  • Python 結巴分詞實現關鍵詞抽取分析

    Python 結巴分詞實現關鍵詞抽取分析

    這篇文章主要介紹了Python 結巴分詞實現關鍵詞抽取分析,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • Python依賴包整體遷移方法詳解

    Python依賴包整體遷移方法詳解

    這篇文章主要介紹了Python依賴包整體遷移方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • Python入門教程1. 基本運算【四則運算、變量、math模塊等】

    Python入門教程1. 基本運算【四則運算、變量、math模塊等】

    這篇文章主要介紹了Python教程的基本運算,包括四則運算、變量的使用與類型檢測、math模塊等,并附帶了相關說明,代碼備有較為詳盡的說明,便于理解,需要的朋友可以參考下
    2018-10-10
  • Python pathlib模塊使用方法及實例解析

    Python pathlib模塊使用方法及實例解析

    這篇文章主要介紹了Python pathlib模塊使用方法及實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10

最新評論