最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Python爬蟲之requests使用

2023-03-19 21:39 作者:py愛好loer  | 我要投稿

繼urllib請(qǐng)求庫后,python有了更為強(qiáng)大的請(qǐng)求庫 requests,有了它,Cookies、登錄驗(yàn)證、代理設(shè)置等操作變得非常簡(jiǎn)單,只需要一個(gè)個(gè)參數(shù)即可實(shí)現(xiàn)相應(yīng)的要求。

1、安裝環(huán)境

pip install requests

官方地址:docs.python-requests.org

2、實(shí)例引入

urllib 庫中的 urlopen 方法實(shí)際上是以 GET 方式請(qǐng)求網(wǎng)頁,而 requests 中相應(yīng)的方法就是 get 方法,是不是感覺表達(dá)更明確一些?下面通過實(shí)例來看一下:

測(cè)試實(shí)例:

3、GET抓取

3.1 抓取二進(jìn)制數(shù)據(jù)

下面以 圖片為例來看一下:

如果不傳遞 headers,就不能正常請(qǐng)求:

但如果加上 headers 并加上 User-Agent 信息,那就沒問題了:

4、POST請(qǐng)求

4.1 --前面我們了解了最基本的 GET 請(qǐng)求,另外一種比較常見的請(qǐng)求方式是 POST。使用 requests 實(shí)現(xiàn) POST 請(qǐng)求同樣非常簡(jiǎn)單,示例如下:

測(cè)試網(wǎng)站

  • 巨潮網(wǎng)絡(luò)數(shù)據(jù) 點(diǎn)擊資訊選擇公開信息

4.2 --發(fā)送請(qǐng)求后,得到的自然就是響應(yīng)。在上面的實(shí)例中,我們使用 text 和 content 獲取了響應(yīng)的內(nèi)容。此外,還有很多屬性和方法可以用來獲取其他信息,比如狀態(tài)碼、響應(yīng)頭、Cookies 等。示例如下:

4.3 --狀態(tài)碼常用來判斷請(qǐng)求是否成功,而 requests 還提供了一個(gè)內(nèi)置的狀態(tài)碼查詢對(duì)象 requests.codes,示例如下:

4.4 --那么,肯定不能只有 ok 這個(gè)條件碼。下面列出了返回碼和相應(yīng)的查詢條件:

5、高級(jí)用法

5.1--代理添加

5.2--快代理IP使用

https://www.kuaidaili.com/doc/dev/quickstart/

打開后,默認(rèn)http協(xié)議,返回格式選json,我的訂單是VIP訂單,所以穩(wěn)定性選穩(wěn)定,返回格式選json,然后點(diǎn)擊生成鏈接,下面的API鏈接直接復(fù)制上。


5.3--關(guān)閉警告

爬蟲流程

6、初級(jí)爬蟲

7、全站采集

7.1--封裝公共文件

創(chuàng)建utils文件夾,寫一個(gè)base類供其他程序調(diào)用

7.2--案例實(shí)踐

文件操作標(biāo)識(shí)


8、requests-cache

pip install requests-cache

在做爬蟲的時(shí)候,我們往往可能這些情況:

  • 網(wǎng)站比較復(fù)雜,會(huì)碰到很多重復(fù)請(qǐng)求。

  • 有時(shí)候爬蟲意外中斷了,但我們沒有保存爬取狀態(tài),再次運(yùn)行就需要重新爬取。

測(cè)試樣例對(duì)比

測(cè)試樣例對(duì)比2

但是,剛才我們?cè)趯懙臅r(shí)候把 requests 的 session 對(duì)象直接替換了。有沒有別的寫法呢?比如我不影響當(dāng)前代碼,只在代碼前面加幾行初始化代碼就完成 requests-cache 的配置呢?

這次我們直接調(diào)用了 requests-cache 庫的 install_cache 方法就好了,其他的 requests 的 Session 照常使用即可。

剛才我們知道了,requests-cache 默認(rèn)使用了 SQLite 作為緩存對(duì)象,那這個(gè)能不能換???比如用文件,或者其他的數(shù)據(jù)庫呢?

自然是可以的。

比如我們可以把后端換成本地文件,那可以這么做:

如果不想生產(chǎn)文件,可以指定系統(tǒng)緩存文件

另外除了文件系統(tǒng),requests-cache 也支持其他的后端,比如 Redis、MongoDB、GridFS 甚至內(nèi)存,但也需要對(duì)應(yīng)的依賴庫支持

比如使用 Redis 就可以改寫如下:

更多詳細(xì)配置可以參考官方文檔:requests-cache.readthedocs.io

當(dāng)然,我們有時(shí)候也想指定有些請(qǐng)求不緩存,比如只緩存 POST 請(qǐng)求,不緩存 GET 請(qǐng)求,那可以這樣來配置:

當(dāng)然我們還可以匹配 URL,比如針對(duì)哪種 Pattern 的 URL 緩存多久,則可以這樣寫:

好了,到現(xiàn)在為止,一些基本配置、過期時(shí)間配置、后端配置、過濾器配置等基本常見的用法就介紹到這里啦,更多詳細(xì)的用法大家可以參考官方文檔:requests-cache.readthedocs.io


Python爬蟲之requests使用的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
尖扎县| 南乐县| 阿巴嘎旗| 黑山县| 山东| 加查县| 湟中县| 瑞丽市| 石台县| 廉江市| 湟源县| 余庆县| 汉阴县| 乐平市| 三门峡市| 舞钢市| 勐海县| 吉隆县| 台南县| 登封市| 唐山市| 全椒县| 诏安县| 内乡县| 钟祥市| 泰顺县| 望江县| 文山县| 阳朔县| 社旗县| 溧阳市| 金坛市| 兴安县| 永新县| 凉城县| 灵武市| 双桥区| 绍兴县| 荔浦县| 金塔县| 铜鼓县|