淺談python爬取數(shù)字書苑圖書

疫情期間屡谐,大家都只能在家中線上學(xué)習(xí)述么,這種情況下,教材就成了一個(gè)問題愕掏。好在度秘,一大批數(shù)據(jù)庫(kù)都已經(jīng)面向社會(huì)部分開放,我們可以實(shí)現(xiàn)教材的在線閱讀饵撑。但是剑梳,這樣的在線閱讀不能在pdf上做筆記,尤其對(duì)于goodnotes深度用戶(比如我)來說就有點(diǎn)不太友好滑潘。
作為一名python業(yè)余愛好者(自從打過美賽之后再也不敢說自己熟練python和MATLAB了)垢乙,第一個(gè)想到的就是如何把圖書從網(wǎng)站上爬下來。當(dāng)然语卤,最開始我的嘗試是失敗了的追逮,不過在我把我的想法跟圈內(nèi)人聊過之后我一個(gè)朋友用一種很秀的方式實(shí)現(xiàn)了這一個(gè)玩法。詢問得知在urllib庫(kù)里面有一個(gè)urlretrieve函數(shù)可以實(shí)現(xiàn)將url對(duì)應(yīng)的圖片下載到本地的功能粹舵,然后由于數(shù)字書苑系統(tǒng)的圖書是一種png圖片播放器框架钮孵,它的圖片可以保存到本地,也有對(duì)應(yīng)的規(guī)律的url眼滤,從而存在爬取的可能巴席。經(jīng)過不懈努力之后我成功把這個(gè)功能在python 3.7.6上實(shí)現(xiàn)了(朋友最初的版本是py2的??)
話不多說,先放代碼

# 20200311 JamesBourbon

from urllib.request import urlretrieve
import time
import os

# 操作:(python3環(huán)境)
# 將數(shù)字書苑的圖書在chrome打開
# 在檢查中找到img src項(xiàng)诅需,將其url弄下來
# (此工作成熟期可用bs4完成)
# 此url中有一個(gè)pageid=1,將數(shù)字換成{}
# 此字符串為參數(shù)url情妖,頁(yè)碼尾數(shù)為tail_id, 保存文件夾目錄為dirpath
# 參數(shù)輸入到函數(shù)szsy_get中即可

# 化工原理上
# url = 'http://cebxol.apabi.com/command/imagepage.ashx?ServiceType=Imagepage&objID=m.20181009-HXGY-XRTO-0449.ft.cebx.1&metaId=m.20181009-HXGY-XRTO-0449&OrgId=iyzhi&username=iyzhi&rights=1-0_00&time=2020-03-08+13%3A20%3A58&sign=7B27C3449E3D2814F6FB948CF0A7273E&pageid={}&width=3284&height=1734'
# 化工原理下
# url = 'http://cebxol.apabi.com/command/imagepage.ashx?ServiceType=Imagepage&objID=m.20181009-HXGY-XRTO-0449.ft.cebx.1&metaId=m.20181009-HXGY-XRTO-0449&OrgId=iyzhi&username=iyzhi&rights=1-0_00&time=2020-03-05+13%3A45%3A50&sign=2DDF187FD2C7BA71C451F5ECD85751C5&pageid={}&width=2732&height=1170'
# 有機(jī)化學(xué)
url = 'http://cebxol.apabi.com/command/imagepage.ashx?ServiceType=Imagepage&objID=m.20181203-HXGY-RXJC-0307.ft.cebx.1&metaId=m.20181203-HXGY-RXJC-0307&OrgId=iyzhi&username=iyzhi&rights=1-0_00&time=2020-03-12+21%3A54%3A01&sign=699186CCE8AD626EE29968EF9310D7D1&pageid={}&width=3840&height=1794'

# 以上鏈接均有可能過期睬关,建議重新打開數(shù)字書苑重新捕捉鏈接

tail_id = 528
dirpath = 'download_test'


def szsy_get(url, tail_id, dirpath):
    # 連續(xù)爬取圖片,從而構(gòu)成pdf
    print('start {}'.format(dirpath))
    if os.access(dirpath, os.R_OK) == False:
        os.makedirs(dirpath)
    try:
        for i in range(tail_id):
            url_use = url.format(i+1)
            # 數(shù)字書苑的img src框架目標(biāo)毡证,其中只有pageid從1到末尾
            urlretrieve(url_use, "{}/{}.png".format(dirpath,i+1))
            # time.sleep(0.1)
            print('{} Done'.format(i+1))
    except:
        print('failed somehow')

szsy_get(url, tail_id, dirpath) 

具體操作在注釋里面寫的很完全了,不過自己還想再新手向一點(diǎn)蔫仙。因?yàn)楸救说那岸思夹g(shù)也賊菜料睛,找個(gè)url還花了半天,也算是自用向記錄吧

  1. 在數(shù)字書苑中找一本書摇邦,開始閱讀恤煞,然后用共享方法發(fā)送到文本傳輸助手,在桌面打開電腦上用瀏覽器打開施籍,如圖:

    2
    image
    在這里插入圖片描述

    image
  2. 在電腦上成功用瀏覽器打開之后(建議谷歌)居扒,右鍵”檢查“,打開html框架代碼丑慎,從中找到對(duì)應(yīng)圖片的url喜喂,一般在img src處。如果右鍵支持在新窗口打開圖片的話也可以竿裂,兩者指向同一個(gè)url


    image
  3. 將這個(gè)url拷貝下來玉吁,里面會(huì)有個(gè)pageid=1(或其他數(shù)字),顯然腻异,這個(gè)1即是頁(yè)碼进副,接下來就利用python強(qiáng)大的字符串處理功能遍歷每一個(gè)頁(yè)碼,完成圖片爬取悔常,將圖片組合成pdf影斑,我們就可以得到我們想要的教材的電子版啦!
    希望這個(gè)方法能幫到大家線上學(xué)習(xí)机打!
    聲明:此方法爬取的電子書僅用于學(xué)習(xí)交流矫户,不會(huì)用于商業(yè)用途,也請(qǐng)使用此代碼爬取圖書的朋友們重視版權(quán)保護(hù)姐帚,切忌將此代碼用于商業(yè)用途吏垮,否則后果自負(fù)!
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末罐旗,一起剝皮案震驚了整個(gè)濱河市膳汪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌九秀,老刑警劉巖遗嗽,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鼓蜒,居然都是意外死亡痹换,警方通過查閱死者的電腦和手機(jī)征字,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來娇豫,“玉大人匙姜,你說我怎么就攤上這事》肓。” “怎么了氮昧?”我有些...
    開封第一講書人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)浦楣。 經(jīng)常有香客問我袖肥,道長(zhǎng),這世上最難降的妖魔是什么振劳? 我笑而不...
    開封第一講書人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任椎组,我火速辦了婚禮,結(jié)果婚禮上历恐,老公的妹妹穿的比我還像新娘寸癌。我一直安慰自己,他們只是感情好夹供,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開白布灵份。 她就那樣靜靜地躺著,像睡著了一般哮洽。 火紅的嫁衣襯著肌膚如雪填渠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評(píng)論 1 307
  • 那天鸟辅,我揣著相機(jī)與錄音氛什,去河邊找鬼。 笑死匪凉,一個(gè)胖子當(dāng)著我的面吹牛枪眉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播再层,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼贸铜,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了聂受?” 一聲冷哼從身側(cè)響起蒿秦,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蛋济,沒想到半個(gè)月后棍鳖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡碗旅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年渡处,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了镜悉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡医瘫,死狀恐怖侣肄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情醇份,我是刑警寧澤茫孔,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站被芳,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏馍悟。R本人自食惡果不足惜畔濒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望锣咒。 院中可真熱鬧侵状,春花似錦、人聲如沸毅整。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)悼嫉。三九已至艇潭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間戏蔑,已是汗流浹背蹋凝。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留总棵,地道東北人鳍寂。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像情龄,于是被迫代替她去往敵國(guó)和親迄汛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容