Request模組實戰02 --- 實現簡易網頁採集器(UA偽裝反爬策略、處理有引數url)

向鯨訴 ひ聽風說'發表於2020-12-08

Request模組實戰02 — 實現簡易網頁採集器(UA偽裝反爬策略、處理有引數url)


目錄:

一、反爬機制

二、UA偽裝

三、網頁採集器

四、程式碼實現

       解析


一、反爬機制

對於爬蟲使用者來說,網站的反爬機制可以說是他們的頭號敵人。反爬機制是為了防止爬蟲爬取資料過於頻繁,給伺服器造成過重的負擔導致伺服器崩潰而設定的機制,它其實也有幾種不同的方式:

  1. 通過UA機制識別爬蟲

UA的全稱是User Agent它是請求瀏覽器的身份標誌,很多網站使用它來作為識別爬蟲的標誌,如果訪問請求的頭部中沒有帶UA那麼就會被判定為爬蟲,但由於這種要針對這種反爬蟲機制十分容易,即隨機UA,所以這種反爬機制使用的很少。

  1. 通過訪問頻率識別爬蟲

爬蟲為了保證效率,往往會在很短的時間內多次訪問目標網站,所以可以通過單個IP訪問的頻率來判斷是否為爬蟲。並且,這種反爬方式比較難以被反反爬機制反制,只能通過更換代理IP來保證效率,如飛魚ip代理。

  1. 通過Cookie和驗證碼識別爬蟲

Cookie就是指會員制的賬號密碼登陸驗證,這就可以通過限制單賬號抓取頻率來限制爬蟲抓取,而驗證碼完全是隨機的,爬蟲指令碼無法正確識別,同樣可以限制爬蟲程式。

返回頂部


二、UA偽裝

  • User-Agent:

請求載體身份標識,通過瀏覽器發起的請求,請求載體為瀏覽器,則該請求的User-Agent為瀏覽器的身份標識,如果使用爬蟲程式發起的請求,則該請求的載體為爬蟲程式,則該請求的User-Agent為爬蟲程式的身份標識伺服器可以通過該值來判斷髮起請求的是瀏覽器還是爬蟲程式
在這裡插入圖片描述
通過正常的瀏覽頁面我們可以獲得允許正常訪問的User-Agent。( 網頁中按F12

  • 反爬機制:

某些入口網站會對訪問該網站的請求中的User-Agent進行捕獲和判斷,如果該請求的UA為爬蟲程式,那麼就拒絕該提供請求資料。

  • 反爬策略

反爬取策略,讓爬蟲請求對應的url身份標識偽裝成某一款瀏覽器

返回頂部


三、網頁採集器

網頁採集器,簡單的來說就是利用爬蟲技術,實現定向的網頁資訊爬取程式。個人理解為這裡就是將程式看成是一個工具,類似轉換器那種,使用程式碼實現與網路資料的轉換。

返回頂部


四、程式碼實現

# -*- coding: utf-8
#  @Time    : 2020/12/7 23:55
#  @Author  : ZYX
#  @File    : request實戰之網頁採集器.py
# @software: PyCharm
import requests

if __name__ == '__main__':

    # UA偽裝,將對應的user-agent封裝到一個字典中
    # 對應著谷歌瀏覽器的一個身份標識
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3776.400 QQBrowser/10.6.4212.400'
    }
    # 1.指定url
    url = 'https://www.sogou.com/web?'
    #  處理url攜帶的引數:封裝到字典中
    kw = input('enter a word:')
    param={
        'query':kw
    }
    # 2.傳送請求
    #   對指定的url發起的請求對應的url是攜帶引數的,並且請求過程中處理了引數
    response = requests.get(url=url,params=param,headers=headers)
    # 3.獲得相應資料
    page_data = response.text
    print(page_data)
    # 4.持久化資料儲存
    fileName = kw+'.html'
    with open('./data/'+fileName,'w',encoding='utf-8') as fp:
        fp.write(page_data)
    print(fileName+'儲存成功,爬取資料結束!!!')

解析:

  • UA偽裝,將對應的user-agent封裝到一個字典中,對應著谷歌瀏覽器的一個身份標識,通過該標識瀏覽器會將爬蟲當做是某一款瀏覽器
    在這裡插入圖片描述

  • 指定url,並處理url攜帶的引數:封裝到字典中。

  • 在這裡插入圖片描述

  • 傳送請求,對指定的url發起的請求對應的url是攜帶引數的,並且請求過程中處理了引數 — UA偽裝請求引數queryurl網址
    在這裡插入圖片描述

  • 獲得相應資料,並將其持久化資料儲存。簡單的來說就是將爬取的結果以檔案的形式儲存
    在這裡插入圖片描述

  • 執行程式,控制檯輸入引數,等待爬取結果
    在這裡插入圖片描述

  • 開啟爬取結果檔案,並在網頁中開啟測試。
    在這裡插入圖片描述
    在這裡插入圖片描述

返回頂部


相關文章