1. 程式人生 > >給大家分享一篇 用Python抓取漫畫並製作mobi格式電子書

給大家分享一篇 用Python抓取漫畫並製作mobi格式電子書

  想看某一部漫畫,但是用手機看感覺螢幕太小,用電腦看吧有太不方面。正好有一部Kindle,決定寫一個爬蟲把漫畫爬取下來,然後製作成 mobi 格式的電子書放到kindle裡面看。

一、編寫爬蟲程式

  用Chrome瀏覽器開啟目標網站,按下F12 啟動“開發者人員工具”,分析目標網站的程式碼,看漫畫存放的真實地址。現在網站的防護措施都做的很好,基本不會出現“右鍵”——“圖片另存為” 然後儲存漫畫這種情況的。分析漫畫頁面 “下一章” 按鈕對應的元素,通過使用 Python + selenium + Chrome瀏覽器 的組合,讓爬蟲自動化遍歷該漫畫所有章節並下載漫畫:

from selenium import
webdriver from selenium.webdriver.chrome.options import Options import time import requests import os def mkdir(path): ''' 防止目錄存在 :param path: :return: ''' if not os.path.exists(path): os.mkdir(path) def SavePic(filename,url): ''' 圖片的儲存 :param filename: :param url: :return: '''
content = requests.get(url).content with open(filename,'wb') as f: f.write(content) def get_TOF(index_url): url_list = [] chrome_options = Options() chrome_options.add_argument('--headless')#啟用Chrome瀏覽器“無頭模式”,提高抓取速率 browser = webdriver.Chrome(chrome_options=chrome_options) browser.get(index_url) browser.implicitly_wait(3
) title = browser.title.split(',')[0]#獲取漫畫標題 mkdir(title)#建立目錄 comics_lists = browser.find_elements_by_class_name('comic_Serial_list')#找到漫畫章節 for part in comics_lists:#找到每一章節所在的標籤資訊 links = part.find_elements_by_tag_name('a') for link in links: url_list.append(link.get_attribute('href'))#獲取每個單獨章節連結 browser.quit() Comics = {'name':title,'urls':url_list} return Comics def get_pic(Comics): comic_list = Comics['urls'] basedir = Comics['name'] chrome_options = Options() chrome_options.add_argument('--headless') browser = webdriver.Chrome(chrome_options=chrome_options) for url in comic_list: browser.get(url) browser.implicitly_wait(3) dirname = basedir+'/'+browser.title.split('-')[1] mkdir(dirname) #找到漫畫一共有多少頁 pageNum = len(browser.find_elements_by_tag_name('option')) #找到下一頁按鈕 nextpage = browser.find_element_by_xpath('//*[@id="AD_j1"]/div/a[4]') for i in range(pageNum): pic_url = browser.find_element_by_id('curPic').get_attribute('src') filename = dirname+'/'+str(i)+'.png' SavePic(filename,pic_url) nextpage.click() print('當前章節\t{} 下載完畢'.format(browser.title)) browser.quit() print('所有章節下載完畢!') if __name__ == '__main__': url = str(input('請輸入漫畫首頁地址:\n')) Comics = get_TOF(url) #print(Comics) get_pic(Comics)

二、整理資料夾順序

  漫畫下載完之後,按照章節順序將漫畫的資料夾排列好。確保 “按資料夾名稱排列” 得到的順序和漫畫章節順序相同。(這裡可以用Python寫一個重新命名指令碼或者用資料夾批量命名軟體來完成),方便電子書的製作。

三、製作電子書

  這裡使用軟體 Kindle Comic Converter (具體用法可見 https://bookfere.com/post/164.html )來製作。需要注意的是,Kindle Comic Converter 生成 MOBI 檔案依賴 KindleGen,如果沒有找到的話,在安裝完成以及執行時都會有提示。請點選這裡 ( https://bookfere.com/tools#KindleGen )下載 KindleGen 並放到相應位置:Windows 系統把 kindlegen.exe 放到 KCC 安裝目錄中;Mac OS X 下需要把 kindlegen 程式放置到路徑“/usr/local/bin”下。再繼續進行轉換步驟。

   另外,網上說的製作過程是

  1. 把所有圖片集中在一個資料夾內;
  2. 點選【Add directory】把資料夾新增到列表[注1];
  3. 選擇 Kindle 裝置型號、輸出格式(可選 MOBI、EPUB 和 CBZ);
  4. 根據需要新增引數,如“Horizontal mobi(橫屏模式)”等;
  5. 點選【Convert】開始轉換。生成的電子書檔案和所新增資料夾在同一目錄。
      【後記】

      經我測試,最方便的做法是不把所有圖片集中在一個資料夾。而是在 “三、製作電子書” 的步驟1 中,按照以下方式進行處理:建立一個《’漫畫名字’》資料夾,然後這個資料夾下是類似“第1章” “第2章”……等資料夾。然後每個章節資料夾裡面放入按順序存放的漫畫圖片。(具體排序要求參見本文的 “二、整理資料夾順序” )。然後點選【Add directory】把《’漫畫名字’》資料夾新增到列表,再進行轉換,這樣轉換出來的電子書就帶有目錄和書籤效果了!

      請注意版權!僅供自己的程式設計學習與測試,不要將製作好的mobi電子書進行傳播,更不要牟利!尊重原作和內容提供商!

     
      整理不易,如果覺得有所幫助,希望可以留下您的精彩言論再走。趕快為你們最喜歡的框架打Call吧。

    大家如果需要Python的學習資料可以加我的Qun:834179111,小編整理了,從Python入門零基礎到專案實戰的資料。歡迎還沒有找到方向的小夥伴來學習。