close

Python 爬蟲實作:分析並下載網路圖片

最近購買了博客來的電子書籍

買了之後才發現沒辦法把整本下載下來

只能使用博客來的電子書線上閱讀器

或許有其他方法下載

但何不自己動手寫個小程序試試看呢~

 

一、分析電子書

首先打開電子書

按下 F12 打開開發人員工具

接著找到此頁面的圖片網址,卻發現有兩個網址,直接複製連結的話,獲得的並非是真實的圖片位置,

圖標 1 是直接複製該連結所取得

圖標 2 則是真實前往的位置

 

5.jpg

可以藉由圖標 2 來尋找關鍵字

而圖片真實的位置就可以使用ctrl+F搜尋關鍵字"streaming"即可找到

2.JPG

將/book/之後都替換成以下的/images/

3.JPG

 

即可找地該圖片的真實位置

6.JPG

 

二、網路圖片下載程式

下載網路圖片程式如下:

  1. 導入套件
  2. 分割網址,若有需要補0則使用字串格式化輸出的方式
  3. 建立一串列,將所有網址以迴圈的方式放入
  4. 設立迴圈的方式將圖片儲存,其中會設定檔案路徑、設一變數為檔案名稱
  5. 最後做一個例外處理,若該網址已無圖片,則顯示已下載完成

 

import requests,os
from urllib.request import urlretrieve
import re
from bs4 import BeautifulSoup
from urllib.error import HTTPError


first = 'https://streaming-ebook.books.com.tw/V1.0/Streaming/book/23B810/2064296/OPS/images/page'
last = '.jpg?checksum=7086103A2C80859B&DownloadToken=56c0ecf%2Fle7%2FOK7ZAB3kc46PGNxewHSyse01ILme6qFCPENN4Nxkv8nWGI4XCFARLiW9ihibv%2FKs9FjkYnP%2BRfq7F3RKA6zYaxnMVKSVMZ7L8ukE7Kwm0M9jiw%2FV5ocFmQOvbJrSKCLSjP2FMoUkh%2F23x2NJHgaEPxEwEpjgAN0IAJH7YZVbtBcfIWlbiRZTImh2MBxQfu9yLhH30bqcwXPWsVlym7%2FlQtOlGhobEa4lmXxsQSpqPC8KO8kEb%2FbWpw%2Bp2kyaayd7R4HgD0%2FhI4nBijHYeGGIhRNswThbgbfsv%2FCyGraEvoTWr9lYe0oAmwQGjwm1xWrjkfPARfEAbOF9rMw8RtohA29GTc%2FIHlyE99X9584%2F88HKphz3Ahyt36kJXrjXTDPcMFITDihlWnrynLquVDGgwXK2bM%2BLf%2Bl%2F82GeGTfvzPcO54jI8U9GSXOlFbCmK8eXQFb6a5XdKsONbTpGMCXv%2FA%2BNJ6zXRCBQL3wgKK6NMVfOiTpvT%2BEjicGKMdfIiveh7nVtqhsRriWZfGxGMCXv%2FA%2BNJ6Rv9tanD6naTJprJ3tHgeAPT%2BEjicGKMdPatLMP4Ikgbd35%2FYlpt4APyRMZQF8V22mAOkKqVUO91f0BKGPjTauYPFwb9zf8lYbgZFJlXci5mW7esDp9Ecdd%2F%2FuvFA1%2FRntpbJePHqRW22mu%2Bm0LPvhTtT6xbvjGn21qd9iO7HqTYyORPcRPMAMB6ALwY7LTLhcGtGdzn9lT80riTl%2FkGoEI6s%2BLTYy7zsy0%2Bsot3G3QoAZalnUq6XtXp0F3hIzvZZy0%2Bsot3G3QpH8W%2FcV8ccfRArpu54d5Y40LEUwQS%2B0X0gjh%2FgmnBxzOF9RiV%2F0PqCCzTwZDnGn1Hz6o0EciqoB3wJXTA0a8oCtk8yFYNOq3ksKuWiHaffYeI9oDV5%2F1gGkGJzVfxPhzeOEqAkn8g0%2Fg%3D%3D'
links=[]
try:
    for i in range(1,999):
        links.append(first + str(i) + last)  ##範例、str("%03d" % i) 若為三位數,且不足位數需補0
    x=1
    for link in links:
        local = os.path.join('E:\\python\\%s.jpg' % x)  #檔案儲存位置
        x+=1
        urlretrieve(link,local)
        print('第',x-1,'張下載完成!')
except HTTPError as e:
    print("已全部下載完成")

 

 

接著就可以到儲存目錄驗收成果囉~也可以合成一本PDF電子書,隨時閱讀

7.JPG

arrow
arrow
    全站熱搜

    ivankao 發表在 痞客邦 留言(0) 人氣()