五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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ó)家法律
孟连| 康乐县| 芒康县| 合肥市| 贵定县| 桃园市| 施甸县| 额尔古纳市| 利津县| 中宁县| 科尔| 涪陵区| 邯郸市| 前郭尔| 乌苏市| 宾川县| 边坝县| 大足县| 枞阳县| 垫江县| 广饶县| 岳池县| 休宁县| 溆浦县| 柳江县| 黑山县| 白玉县| 齐齐哈尔市| 康定县| 龙井市| 康保县| 鹤壁市| 汽车| 郎溪县| 农安县| 奉节县| 荔浦县| 平邑县| 洛川县| 木兰县| 翁牛特旗|