Python3.x 網絡爬蟲之 request.Request 類,反反爬蟲

【純個人手打,替老師傳道,不求多大成就但願 能幫到大家,在閒暇的時間裡為大家共享一些工作經驗和各種技術資源文章,希望幫助大家共同進步 也希望我的發佈對你有所幫助,我的發佈裡有更多類似的文章可以查閱,喜歡的請點關注,謝謝。你們的關注是我不停發佈的最大動力,在我發佈裡好多類似這樣的文章,請盡情閱覽】

"""

request.Request 類 :他是 urllib 庫的 request 模塊下的一個功能,不需要單獨安裝,是 python3 自帶的

request.Request 類的作用:在請求 URL 的時候添加一些信息,比如說,我們在使用

response = request.urlopen("http://www.baidu.com") 去直接請求的

但是時候有些 URL 是帶有反爬蟲機制的,這時我們怎麼辦呢?就是要藉助這個 request.Request 來傳遞更多的信息

來模擬瀏覽器,繞過反爬蟲機制 備註:代碼可以直接粘貼使用

"""

# 1、導入需要用到的相關庫

from urllib import request

from urllib import parse

# 2、定義請求目標的 URL

url = "https://www.lagou.com/jobs/positionAjax.json?city=%E5%8C%97%E4%BA%AC&needAddtionalResult="

# 3、定義 headers 信息,這個信息就是要用來在請求 URL 時傳遞進去的數據。我們先把它準備好

headers = {

"User-Agent" :"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"

" (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36",

"Referer" :"https://www.lagou.com/jobs/list_python? labelWords=&fromSearch=true&suginput="

}

# 4、定義 data 數據,這個也是一會兒請求 URL 時需要用到的,先給它也準備好

# 我們定義 headers 和 data 這兩個信息的作用就是反反爬蟲機制用的,你知道就好了

# 這個 data 信息不一定必須要,看你的請求是 post 還是 get 的

data = {

"first": "true",

"pn": "1",

"kd": "python"

}

# 5、使用 request.Request 類創建一個 req 對象,這樣我們就將上面的信息都整合到一起了,下面可以開始請求了

# req = request.Request(url, headers=headers) # 如果是get請求則用這個

# 5.5、如果發送 post 請求時用這個;你看,區別就在於這裡多傳了 data 和 method

# 可是,這裡如果直接傳入 data 數據的話是無法識別的,得需要先將讓它進行重新編碼成規範的格式

# data=parse.urlencode(data) 這樣編碼完後呢是 unicode 字符串,但是在請求的時候是需要 bytes 類型的

# 所以還要使用 .encode("utf-8") 再轉換成 bytes 數據類型才可以

req = request.Request(url, headers=headers, data=parse.urlencode(data).encode("utf-8"), method="POST")

# 6、使用 request.urlopen 函數,去請求上面我們準備好的對象,因為這個 req 對象裡都包含了上面的信息了嘛

response = request.urlopen(req)

# 7、最後打印請求結果:因為上面的 request.urlopen(req) 請求最終返回結果都給了 response ,所以這裡打印它

# 打印的時候我們使用 decode 函數轉碼成 utf-8 格式,好方便我們查看

print(response.read().decode("utf-8"))

Python3.x 網絡爬蟲之 request.Request 類,反反爬蟲

圖片是直接從我電腦截圖的,如果模糊請多包涵

Python3.x 網絡爬蟲之 request.Request 類,反反爬蟲

圖片是直接從我電腦截圖的,如果模糊請多包涵


分享到:


相關文章: