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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

孤荷凌寒自学python第八十一天学习爬取图片1

發布時間:2025/4/16 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 孤荷凌寒自学python第八十一天学习爬取图片1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

孤荷凌寒自學python第八十一天學習爬取圖片1

?

(完整學習過程屏幕記錄視頻地址在文末)

?

通過前面十天的學習,我已經基本了解了通過requests模塊來與網站服務器進行交互的方法,也知道了BeautifulSoup模塊的基本用法。

?

但之前的學習主要還是獲取網頁上的文字內容為主,從今天起我開始嘗試學習從網頁上獲取其中的圖片并下載到本地。

?

?

一、首先加深了對requests模塊的認識

找到了requests模塊的官方文檔:

http://docs.python-requests.org/en/latest/user/quickstart/

是全英文的。

然后又找到一篇比較詳盡的文章:

http://www.sharejs.com/codes/python/9013

?

二、嘗試了兩種下載圖片到本地的方法

?

(一)第一種

在通過requests模塊的get或post方法去訪問具體的url后獲取response數據后,通過response的content屬性的數據直接保存為圖片。

參照的是博客文章:

https://blog.csdn.net/small_brother/article/details/75003392

謝謝博主的分享。

代碼如下:

```

#使用content的寫法,速度要慢得多

def downloadpicfirst():

??? header={

??????? 'cookie':'uuid_tt_dd=10_11685725060-1535977152139-368966; Hm_ct_6bcd52f51e9b3dce32bec4a3997715ac=1788*1*PC_VC; dc_session_id=10_1545396180085.288077; _ga=GA1.2.789896779.1545739300; ARK_ID=JS37a466e7e4ee36b9ce4ed9892df8d14337a4; smidV2=201809131456053120144ad460339bd628ba921ff129c3002a47323f76baa60; __yadk_uid=yBjJ76lx46GoRgyv8KgGxQV4FXAySfOr; firstDie=1; dc_tos=plj2dk; Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=1547688865,1547815074,1547815726,1547815881; Hm_lpvt_6bcd52f51e9b3dce32bec4a3997715ac=1547815881; c-login-auto=60',

??????? 'upgrade-insecure-requests':'1',

??????? 'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'

??? }

??? strpicurl='https://img-blog.csdn.net/20170712075151071?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc21hbGxfYnJvdGhlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast'

??? r=requests.get(strpicurl,headers=header)

??? r.raise_for_status() #raise異常自動拋出,如果讀取的Url服務器端返回400或500及后的錯誤,那么,則會拋出異常后,不再向后執行

??? #下一句指定了讀取網頁時要使用的編碼格式

??? r.encoding=r.apparent_encoding #requests的返回結果對象里有個apparent_encoding函數, apparent_encoding通過調用chardet.detect()來識別文本編碼. 但是需要注意的是,這有些消耗計算資源.

??? #r.encoding='utf-8'

??? with open('1.jpg','wb') as f:

??????? f.write(r.content) #content屬性與text屬性不同

```

我只下載了一張圖片,但居然花費了一分鐘,原因不明。

?

(二)第二種

在requests模塊獲取指定url數據時,指定一個參數:

stream=True

表示,獲取回的數據變成數據流的模式.

然后直接將數據流保存為文件。

具體代碼如下:

```

#使用流模式的寫法,速度快得多

def downloadpicsecond():

??? header={

??????? 'cookie':'uuid_tt_dd=10_11685725060-1535977152139-368966; Hm_ct_6bcd52f51e9b3dce32bec4a3997715ac=1788*1*PC_VC; dc_session_id=10_1545396180085.288077; _ga=GA1.2.789896779.1545739300; ARK_ID=JS37a466e7e4ee36b9ce4ed9892df8d14337a4; smidV2=201809131456053120144ad460339bd628ba921ff129c3002a47323f76baa60; __yadk_uid=yBjJ76lx46GoRgyv8KgGxQV4FXAySfOr; firstDie=1; dc_tos=plj2dk; Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=1547688865,1547815074,1547815726,1547815881; Hm_lpvt_6bcd52f51e9b3dce32bec4a3997715ac=1547815881; c-login-auto=60',

??????? 'upgrade-insecure-requests':'1',

??????? 'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'

??? }

??? strpicurl='https://img-blog.csdn.net/20170712075151071?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc21hbGxfYnJvdGhlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast'

??? r=requests.get(strpicurl,headers=header,stream=True)

??? r.raise_for_status() #raise異常自動拋出,如果讀取的Url服務器端返回400或500及后的錯誤,那么,則會拋出異常后,不再向后執行

??? #流模式不需要指定編碼格式

??? #下一行用意在于,在寫完流之后,自動關閉流

??? with closing(requests.get(strpicurl,headers=header,stream=True)) as r:

??????? with open('1.jpg','wb') as f:

??????????? #將流分成n個部分寫入,每個部分分成128字節

??????????? for chunk in r.iter_content(128):? #這一句vscode提示有錯,但是假的報錯,不影響實際執行

??????????????? f.write(chunk)

?

```

使用這種方法速度就正常了。

具體原因還不清楚。

?

三、今天完整的測試代碼

import requests

from bs4 import BeautifulSoup

import re

import datetime

import pymongo

?

from contextlib import closing

?

from docx.shared import RGBColor #將三個數值生成色彩對象

?

import _mty

import _mf

import _mbs4

import _mmongo

import _mre

import _mdb

import _mword

?

intc=0

?

def msgbox(info,titletext='孤荷凌寒的DB模塊對話框QQ578652607',style=0,isShowErrMsg=False):

??? return _mty.msgboxGhlh(info,titletext,style,isShowErrMsg)

?

#使用content的寫法,速度要慢得多

def downloadpicfirst():

??? header={

??????? 'cookie':'uuid_tt_dd=10_11685725060-1535977152139-368966; Hm_ct_6bcd52f51e9b3dce32bec4a3997715ac=1788*1*PC_VC; dc_session_id=10_1545396180085.288077; _ga=GA1.2.789896779.1545739300; ARK_ID=JS37a466e7e4ee36b9ce4ed9892df8d14337a4; smidV2=201809131456053120144ad460339bd628ba921ff129c3002a47323f76baa60; __yadk_uid=yBjJ76lx46GoRgyv8KgGxQV4FXAySfOr; firstDie=1; dc_tos=plj2dk; Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=1547688865,1547815074,1547815726,1547815881; Hm_lpvt_6bcd52f51e9b3dce32bec4a3997715ac=1547815881; c-login-auto=60',

??????? 'upgrade-insecure-requests':'1',

??????? 'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'

??? }

??? strpicurl='https://img-blog.csdn.net/20170712075151071?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc21hbGxfYnJvdGhlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast'

??? r=requests.get(strpicurl,headers=header)

??? r.raise_for_status() #raise異常自動拋出,如果讀取的Url服務器端返回400或500及后的錯誤,那么,則會拋出異常后,不再向后執行

??? #下一句指定了讀取網頁時要使用的編碼格式

??? r.encoding=r.apparent_encoding #requests的返回結果對象里有個apparent_encoding函數, apparent_encoding通過調用chardet.detect()來識別文本編碼. 但是需要注意的是,這有些消耗計算資源.

??? #r.encoding='utf-8'

??? with open('1.jpg','wb') as f:

??????? f.write(r.content) #content屬性與text屬性不同

?

#使用流模式的寫法,速度快得多

def downloadpicsecond():

??? header={

??????? 'cookie':'uuid_tt_dd=10_11685725060-1535977152139-368966; Hm_ct_6bcd52f51e9b3dce32bec4a3997715ac=1788*1*PC_VC; dc_session_id=10_1545396180085.288077; _ga=GA1.2.789896779.1545739300; ARK_ID=JS37a466e7e4ee36b9ce4ed9892df8d14337a4; smidV2=201809131456053120144ad460339bd628ba921ff129c3002a47323f76baa60; __yadk_uid=yBjJ76lx46GoRgyv8KgGxQV4FXAySfOr; firstDie=1; dc_tos=plj2dk; Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=1547688865,1547815074,1547815726,1547815881; Hm_lpvt_6bcd52f51e9b3dce32bec4a3997715ac=1547815881; c-login-auto=60',

??????? 'upgrade-insecure-requests':'1',

??????? 'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'

?? ?}

??? strpicurl='https://img-blog.csdn.net/20170712075151071?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc21hbGxfYnJvdGhlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast'

??? r=requests.get(strpicurl,headers=header,stream=True)

??? r.raise_for_status() #raise異常自動拋出,如果讀取的Url服務器端返回400或500及后的錯誤,那么,則會拋出異常后,不再向后執行

??? #流模式不需要指定編碼格式

??? #下一行用意在于,在寫完流之后,自動關閉流

??? with closing(requests.get(strpicurl,headers=header,stream=True)) as r:

??????? with open('1.jpg','wb') as f:

??????????? #將流分成n個部分寫入,每個部分分成128字節

??????????? for chunk in r.iter_content(128):? #這一句vscode提示有錯,但是假的報錯,不影響實際執行

??????????????? f.write(chunk)

?

downloadpicsecond()

?

#downloadpicfirst()

?

?

?

——————————

今天整理的學習筆記完成,最后例行說明下我的自學思路:

根據過去多年我自學各種編程語言的經歷,認為只有真正體驗式,解決實際問題式的學習才會有真正的效果,即讓學習實際發生。在2004年的時候我開始在一個鄉村小學自學電腦 并學習vb6編程語言,沒有學習同伴,也沒有高師在上,甚至電腦都是孤島(鄉村那時還沒有網絡),有的只是一本舊書,在痛苦的自學摸索中,我找到適應自己零基礎的學習方法:首先是每讀書的一小節就作相應的手寫筆記,第二步就是上機測試每一個筆記內容是否實現,其中會發現書中講的其實有出入或錯誤,第三步就是在上機測試之后,將筆記改為電子版,形成最終的修訂好的正確無誤的學習筆記 。

通過反復嘗試錯誤,在那個沒有分享與交流的黑暗時期我摸黑學會了VB6,爾后接觸了其它語言,也曾聽過付費視頻課程,結果發現也許自己學歷果然太低,就算是零基礎的入門課程,其實也難以跟上進度,講師的教學多數出現對初學者的實際情況并不了解的情況,況且學習者的個體也存在差異呢?當然更可怕的是收費課程的價格往往是自己難以承受的。

于是我的所有編程學習都改為了自學,繼續自己的三步學習筆記法的學習之路。

當然自學的最大問題是會走那么多的彎路,沒有導師直接輸入式的教學來得直接,好在網絡給我們帶來無限搜索的機會,大家在網絡上的學習日志帶給我們共享交流的機會,而QQ群等交流平臺、網絡社區的成立,我們可以一起自學,互相批評交流,也可以獲得更有效,更自主的自學成果。

于是我以人生已過半的年齡,決定繼續我的編程自學之路,開始學習python,只希望與大家共同交流,一個人的獨行是可怕的,只有一群人的共同前進才是有希望的。

誠摯期待您的交流分享批評指點!歡迎聯系我加入從零開始的自學聯盟。

這個時代互聯網成為了一種基礎設施的存在,于是本來在孤獨學習之路上的我們變得不再孤獨,因為網絡就是一個新的客廳,我們時刻都可以進行沙龍活動。

非常樂意能與大家一起交流自己自學心得和發現,更希望大家能夠對我學習過程中的錯誤給予指點——是的,這樣我就能有許多免費的高師了——這也是分享時代,社區時代帶來的好福利,我相信大家會的,是吧!

?

根據完全共享的精神,開源互助的理念,我的個人自學錄制過程是全部按4K高清視頻錄制的,從手寫筆記到驗證手寫筆記的上機操作過程全程錄制,但因為4K高清文件太大均超過5G以上,所以無法上傳至網絡,如有需要可聯系我QQ578652607對傳,樂意分享。上傳分享到百度網盤的只是壓縮后的720P的視頻。

?

我的學習過程錄像百度盤地址分享如下:(清晰度:1280x720)

鏈接:https://pan.baidu.com/s/1UrZzTsAk2duMGhh0gcxw0w

提取碼:wbsg

?

Bilibili:

https://www.bilibili.com/video/av41235967/

?

喜馬拉雅語音筆記:

https://www.ximalaya.com/keji/19103006/156016081

轉載于:https://www.cnblogs.com/lhghroom/p/10327915.html

總結

以上是生活随笔為你收集整理的孤荷凌寒自学python第八十一天学习爬取图片1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。