python2.7中urlretrieve( )函式的使用
python2.7中的urllib.urlretrieve( )方法
1. urlretrieve()方法直接將遠端資料(圖片或者文件)下載到本地。具體引數為:
urlretrieve(url, filename=None, reporthook=None, data=None)
- 引數filename指定了儲存本地路徑(如果引數未指定,urllib會生成一個臨時檔案儲存資料。)
- 引數reporthook是一個回撥函式,當連線上伺服器、以及相應的資料塊傳輸完畢時會觸發該回調,我們可以利用這個回撥函式來顯示當前的下載進度。
- 引數data指post導伺服器的資料,該方法返回一個包含兩個元素的(filename, headers) 元組,filename 表示儲存到本地的路徑,header表示伺服器的響應頭
2. 示例程式碼如下:
# encoding:utf-8 import requests from lxml import etree import urllib import os import re headers = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36" } def parse_page(url): # 1.獲取網頁請求 response = requests.get(url, headers=headers) text = response.text # print text # 2.解析網頁內容 html = etree.HTML(text) images = html.xpath("//div[@class='page-content text-center']//img[@class!='gif']") for img in images: # print etree.tostring(img) # img.get('data-original'):get方法可以得到‘data-original’屬性的值 img_url = img.get('data-original') img_name = img.get('alt') img_name = re.sub(r'[\??!!\.。]', '', img_name) img_suffix = os.path.splitext(img_url)[-1] img_filename = img_name+img_suffix urllib.urlretrieve(img_url, "Images/"+img_filename, report_hook) def report_hook(a, b, c): """回撥函式 :param a:已經下載的資料塊 :param b:資料塊的大小 :param c:遠端檔案的大小 :return: """ per = 100.0*a*b/c if per > 100: per = 100 print "%.2f%%" % per def main(): for x in range(1, 101): url = "http://www.doutula.com/photo/list/?page=%d" % x parse_page(url) # print url break if __name__ == '__main__': main()
3. 執行結果為:
......
98.00%
98.84%
99.68%
100.00%
Process finished with exit code 0
Images資料夾下的檔案如下:
相關推薦
python2.7中urlretrieve( )函式的使用
python2.7中的urllib.urlretrieve( )方法1. urlretrieve()方法直接將遠端資料(圖片或者文件)下載到本地。具體引數為: urlretrieve(url, filename=None, reporthook=None, dat
Python2.7中input和raw_input函式有什麼區別
1、input函式: input函式會假設要求使用者輸入的是合法的Python表示式,什麼是合法的Python表示式呢?像37、3*4、‘name’都是合法的,分別代表整數37、數學表示式3乘4、字串name,而像x=3、name是不合法的。
在centos 7 中 conda 環境和Python2.7 中安裝遠程jupyter
配置 pass 準備 pen env conda 其他 nbsp 隔離 折騰了半天,為了能夠方便學習TensorFlow,搞了遠程的jupyter,方便在本地使用它,今天填了不少坑。 裝完後截圖: 下面是一些步驟: 檢查 Python 環境 CentOS 7
python2.7中pip的安裝
最近在學python爬蟲的相關知識,需要用到一個beautifulsoup的網頁解析器,需要用的pip安裝相關的包,但是我的python資料夾中沒有scripts的資料夾,無法使用pip,然後只能在網上查詢如何下載pip,相關查找出現了很多的解決辦法,包括直接下載ez_se
python2.7中編碼問題以及txt檔案讀寫的注意事項
首先,要清楚一點:在py檔案和python動態直譯器(命令列)中,輸入中文字串編碼是不一樣的,動態直譯器中預設編碼環境是ansi,比較麻煩(也有解決辦法),建議在py檔案中處理編碼問題。 python2.7中的字串有兩種形式:str”…”和 unicode u
Python2.7中的for迴圈、while迴圈示例
print "\nFFFFFFFFFFfor迴圈 FFFFFFFFFF" # for-loop列印九九乘法表,金字塔形狀rows = range(1,10) cols = range(1,10) r
python2.7 中構造帶u'的字串
python2.7 中由字串變數構造前面帶u的字串的方法: ss='test' sb=u''+str(ss) sb就是我們想要的前面帶u的字串 Python 2有兩種字串型別:Unicode字串和非U
Python2.7中的比較和判斷程式碼例項
print"\n~~~~~~~ 如何判斷python物件的內容和物件的記憶體地址 ~~~~~~~~~"t1 = (1,2,3,4) t2 = (1,2,3,4)print id(t1);printid
Python2.7中dict.values()+dict.values(),在Python3.5中解決辦法
首先來看下在Python2.7中程式碼: w={ 'a':1, 'b':2, 'c':3 } b={ 'aa':4, 'bb':5, 'cc':6 } r=w.values()+b.values() print(
VM中python2.7運行skier遊戲,shell重啟問題!!!!!!
star 閃退 body shell script 問題: 代碼 rest win7 在虛擬機win7系統python2.7,在該python中運行了 父與子中的skier遊戲(代碼手寫), 出現如下問題: ================ RESTART: C:\Pyt
Windows7在Eclipse中配置Python2.7+OpenCV
mage python2.7 .net face arc javase pack nump sele 1.從http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u2-download-1377129.ht
Linux中安裝Python2.7
目錄 ron 文件 red ftw The find ack 並且 原文地址:http://www.jianshu.com/p/6425d18d3e47 安裝依賴的庫 yum -y install python-devel openssl openssl-devel
處理Python2.7讀寫文件中的中文亂碼問題
創建 文本文件 odi 出現 print 文本 處理 ecs 報錯 1.設置默認編碼 在Python代碼中的任何地方出現中文,編譯時都會報錯,這時可以在代碼的首行添加相應說明,明確utf-8編碼格式,可以解決一般情況下的中文報錯。當然,編程中遇到具體問題還需具體分析啦。 #
Python2.7 Print函式
Print函式的各種用法 一、基礎用法 1.print語句可以向螢幕上輸出指定的文字。 例如: print 'Hello World!' 2.print語句也可以跟上多個字串,用逗號“,”隔開,就可以連成一串輸出: ps:print會依次列印每個字串,遇到逗號“,”會
Mac中python2.7和python3.6的版本切換
之前博主已經安裝好了python3.6,可是Mac中的預設python版本仍然是python2.7。 首先參考一個部落格: https://blog.csdn.net/Tyro_java/article/details/78510301 如果安裝好了新版本,可以直接從博文中 檢查環境
win10系統中如何使得python2.7 和python3.7同時共存
連結地址:https://www.cnblogs.com/recordtime/p/7017266.html 記錄本機python系列: python2.7.10 cmd下 python 直接進入python2.7 安裝庫 直接使用 pip install XXX python3.7.0 cad下
7月16日任務 shell中的函式 、shell中的陣列、告警系統需求分析
20.16 shell中的函式 函式就是把一段程式碼整理到了一個小單元中,並給這個小單元起一個名字,當用到這段程式碼時直接呼叫這個小單元的名字即可。 格式: function f_name() { &nbs
python3中無法import cv2,importError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so
這個問題就是importError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so,為什麼會出現這個問題?因為當初安裝cv2的時候,預設弄在了Python2,所以導致這個錯誤的產生,解決辦法在這篇文章中被找到。不過裡面的解決辦法太多,好多
牛客網《劍指offer》之Python2.7實現:二進位制中1的個數
題目描述 輸入一個整數,輸出該數二進位制表示中1的個數。其中負數用補碼錶示。 思路 來源牛客網高玩: 如果一個整數不為0,那麼這個整數至少有一位是1。如果我們把這個整數減1,那麼原來處在整數最右邊的1就會變為0,原來在1後面的所有的0都會變成1(如果最右邊的1後
Python2語法簡記(7):函式
7 函式:def printme(str1, str2): def printme(str1, str2): "列印傳入的字串" # 函式的第一行語句可以選擇性地使用文件字串—用於存放函式說明。 print str1, str2 r