日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

零基础学Python-爬虫-1、网络请求Requests【网络操作理论基础与实践·请认真看看理论,理论基础决定后期高度】

發(fā)布時(shí)間:2024/8/26 python 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 零基础学Python-爬虫-1、网络请求Requests【网络操作理论基础与实践·请认真看看理论,理论基础决定后期高度】 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本套課程正式進(jìn)入Python爬蟲(chóng)階段,具體章節(jié)根據(jù)實(shí)際發(fā)布決定,可點(diǎn)擊【python爬蟲(chóng)】分類專欄進(jìn)行倒序觀看:

【重點(diǎn)提示:請(qǐng)勿爬取有害他人或國(guó)家利益的內(nèi)容,此課程雖可爬取互聯(lián)網(wǎng)任意內(nèi)容,但無(wú)任何收益,只為大家學(xué)習(xí)分享。】

開(kāi)發(fā)環(huán)境:【W(wǎng)in10】

開(kāi)發(fā)工具:【Visual Studio 2019】

Python版本:【3.7】

1、Python爬蟲(chóng)的介紹

網(wǎng)絡(luò)爬蟲(chóng)(又被稱為網(wǎng)頁(yè)蜘蛛(Web Spider),網(wǎng)絡(luò)機(jī)器人,好聽(tīng)點(diǎn)的稱為網(wǎng)頁(yè)追逐者),是一種按照一定的規(guī)則,自動(dòng)地抓取萬(wàn)維網(wǎng)(www)信息的程序或者腳本。

在瀏覽器中輸入地址(網(wǎng)站地址URL:百度一下,你就知道)后,向服務(wù)器發(fā)送一個(gè)請(qǐng)求,服務(wù)器經(jīng)過(guò)解析后發(fā)送給用戶瀏覽器結(jié)果。

爬蟲(chóng)就是通過(guò)分析和過(guò)濾html代碼,從中獲取我們想要的資源(文本、圖片、音頻、視頻等)。

2、請(qǐng)求【request】與響應(yīng)【response】

2.1、服務(wù)器處理請(qǐng)求的流程:

? (1)服務(wù)器每次收到請(qǐng)求時(shí),都會(huì)為這個(gè)請(qǐng)求開(kāi)辟一個(gè)新的線程。
? (2)服務(wù)器會(huì)把客戶端的請(qǐng)求數(shù)據(jù)封裝到request對(duì)象中,request就是請(qǐng)求數(shù)據(jù)的載體!
? (3)服務(wù)器還會(huì)創(chuàng)建response對(duì)象,這個(gè)對(duì)象與客戶端連接在一起,它可以用來(lái)向客戶端發(fā)送響應(yīng)。

2.2、request—封裝了客戶端所有的請(qǐng)求數(shù)據(jù)

request的功能可以分為以下幾種:

(1)封裝了請(qǐng)求頭數(shù)據(jù);

(2)封裝了請(qǐng)求正文數(shù)據(jù),如果是GET請(qǐng)求,那么就沒(méi)有正文;

(3)request是一個(gè)域?qū)ο?#xff0c;可以把它當(dāng)成Map來(lái)添加獲取數(shù)據(jù);

(4)request提供了請(qǐng)求轉(zhuǎn)發(fā)和請(qǐng)求包含功能。

2.2.1、GET請(qǐng)求和POST請(qǐng)求的區(qū)別:

GET請(qǐng)求:

請(qǐng)求參數(shù)會(huì)在瀏覽器的地址欄中顯示,所以不安全;

請(qǐng)求參數(shù)長(zhǎng)度限制長(zhǎng)度在1K之內(nèi);#面試考點(diǎn),我經(jīng)常問(wèn)面試者這個(gè)問(wèn)題

GET請(qǐng)求沒(méi)有請(qǐng)求體,無(wú)法通過(guò)request.setCharacterEncoding()來(lái)設(shè)置參數(shù)的編碼;

POST請(qǐng)求:

請(qǐng)求參數(shù)不會(huì)顯示瀏覽器的地址欄,相對(duì)安全;#大廠一般請(qǐng)求都會(huì)是Post,包括很多read操作。

請(qǐng)求參數(shù)長(zhǎng)度沒(méi)有限制;

2.3、response在python中的理解

Python django中我們經(jīng)常用的response有django中的 JsonResponse, HttpResponse,還有DRF中的Response

在使用的時(shí)候,經(jīng)常會(huì)不知道如何什么時(shí)候選擇用哪個(gè)response

下面簡(jiǎn)單記錄下這三個(gè)response的區(qū)別

2.3.1、HttpResponse

它的返回格式為:HttpResponse(content=響應(yīng)體, content_type=響應(yīng)體數(shù)據(jù)類型, status=狀態(tài)碼)

1)它可以返回普通文本信息

HttpResponse("哈哈哈哈")

2)它可以像文本一樣追加內(nèi)容:

res = HttpResponse("哈哈哈哈")

res.write("恩,我們是一個(gè)測(cè)試段落")

3)它還可以返回圖片,音頻,視頻等二進(jìn)制文件信息

img = open(filepath,"rb")

data = img.read()

return HttpResponse(data, content_type="image/png")

2.3.2、JsonResponse

它繼承自HttpResponse,它主要用于返回json格式的數(shù)據(jù)

JsonResponse(jsonData,content_type="application/json")

2.3.3、RestFramework框架封裝的Response

它的返回格式為:

Response(data, status=None,template_name=None, header=None, content_type=None)

data:為python內(nèi)建數(shù)據(jù)類型,DRF會(huì)使用render渲染器處理data

3、修改pip鏡像地址為國(guó)內(nèi)地址(請(qǐng)保存此模塊)

國(guó)內(nèi)鏡像地址

http://pypi.douban.com/simple/ 豆瓣
http://mirrors.aliyun.com/pypi/simple/ 阿里
http://pypi.hustunique.com/simple/ 華中理工大學(xué)
http://pypi.sdutlinux.org/simple/ 山東理工大學(xué)
http://pypi.mirrors.ustc.edu.cn/simple/ 中國(guó)科學(xué)技術(shù)大學(xué)
https://pypi.tuna.tsinghua.edu.cn/simple 清華

安裝命令:【賦復(fù)制粘貼即可】

pip install --index http://mirrors.aliyun.com/pypi/simple/ pandas

4、安裝pip的requests包(注:如果pip不是最新的請(qǐng)直接所有pip安裝最新版本即可)

安裝完成后:

5、測(cè)試【requests】訪問(wèn)網(wǎng)址:(前提是安裝了requests模塊才能使用import引入)

import requests #獲取請(qǐng)求的響應(yīng)結(jié)果【response】 response=requests.get("http://www.baidu.com") #類型 print(type(response)) #響應(yīng)狀態(tài)【200為成功】 print(response.status_code) #響應(yīng)文本類型-一般都是str字符串 print(type(response.text)) #響應(yīng)文本內(nèi)容 print(response.text) #<RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]> print(response.cookies) #響應(yīng)內(nèi)容 print(response.content) #修改響應(yīng)的編碼格式 print(response.content.decode("utf-8"))

5.1、重點(diǎn)理解

response.text返回的類型是str

response.content返回的類型是bytes,可以通過(guò)decode()方法將bytes類型轉(zhuǎn)為str類型

推薦使用:response.content.decode()的方式獲取相應(yīng)的html頁(yè)面

5.2、擴(kuò)展理解

  • response.text?
    解碼類型:根據(jù)HTTP頭部對(duì)響應(yīng)的編碼做出有根據(jù)的推測(cè),推測(cè)的文本編碼?
    如何修改編碼方式:response.encoding = 'gbk'

  • response.content?
    解碼類型:沒(méi)有指定?
    如何修改編碼方式:response.content.decode('utf8')

6、【requests】請(qǐng)求方式:(測(cè)試的是阿里的手機(jī)地址查詢(免費(fèi)的get接口),只返回gbk編碼的數(shù)據(jù))

import requests #獲取請(qǐng)求的響應(yīng)結(jié)果【response】 tel=int(input("請(qǐng)輸入手機(jī)號(hào)碼:\n")) url="https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel={0}".format(tel) print(url) response=requests.get(url) print(response.text) print(response.content.decode("gbk"))

個(gè)人推薦使用【聚合數(shù)據(jù)】做自己的測(cè)試用接口,免費(fèi)的每天能用100次左右,夠你做測(cè)試了。有條件的可以使用自己的接口測(cè)試,我在【ASP.NET Core中詳細(xì)的介紹的創(chuàng)建使用上線步驟】

由于未找到post請(qǐng)求的免費(fèi)api故而寫個(gè)例子做展示啊:

import requests data = {"name":"小龍女","age":16 } response = requests.post("http://httpbin.org/post",data=data) print(response.text)

?

7、urllib.request與requests區(qū)別

通常而言,在我們使用python爬蟲(chóng)時(shí),更建議用requests庫(kù),因?yàn)閞equests比urllib更為便捷,requests可以直接構(gòu)造get,post請(qǐng)求并發(fā)起,而urllib.request只能先構(gòu)造get,post請(qǐng)求,再發(fā)起。

8、總結(jié):

a)、本章節(jié)主要為讓大家了解網(wǎng)絡(luò)請(qǐng)求的方式,這里主要是【get】與【post】請(qǐng)求,使用的是【requests】模塊。

b)、后續(xù)所有的訪問(wèn)返回都會(huì)使用【requests】請(qǐng)大家好好練習(xí)一下這塊。

歡迎【點(diǎn)贊】、【評(píng)論】、【關(guān)注】、【收藏】、【打賞】,為推廣知識(shí)貢獻(xiàn)力量。

與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的零基础学Python-爬虫-1、网络请求Requests【网络操作理论基础与实践·请认真看看理论,理论基础决定后期高度】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。