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