成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

豆瓣閱讀報(bào)告生成器

Simon / 1593人閱讀

摘要:是一個(gè)自動(dòng)根據(jù)你的豆瓣讀書(shū)標(biāo)記生成讀書(shū)報(bào)告的腳本。動(dòng)機(jī)我自己自己是一個(gè)重度豆瓣讀書(shū)用戶注意這里要區(qū)分豆瓣讀書(shū)和豆瓣閱讀的區(qū)別。豆瓣授權(quán)由于要讀用戶的豆瓣數(shù)據(jù),那么就要接入豆瓣的,那么就要先向豆瓣申請(qǐng)授權(quán)。

DouBanReader是一個(gè)自動(dòng)根據(jù)你的豆瓣讀書(shū)標(biāo)記生成讀書(shū)報(bào)告的腳本。適用對(duì)象是像我這種豆瓣讀書(shū)的重度用戶,會(huì)在豆瓣上標(biāo)記自己讀過(guò)的每一本書(shū),并且會(huì)很負(fù)責(zé)地打分與寫(xiě)review。對(duì)于這樣的用戶,這個(gè)項(xiàng)目可以幫你一鍵生成讀書(shū)報(bào)告,并且格式化成MarkDown格式,之后你再發(fā)布到各大博客平臺(tái)或者自己轉(zhuǎn)成其他格式(HTML,PDF和圖片等)都非常容易。

動(dòng)機(jī)

我自己自己是一個(gè)重度豆瓣讀書(shū)用戶(注意這里要區(qū)分豆瓣讀書(shū)和豆瓣閱讀的區(qū)別)。最近兩年的年閱讀量都在45到50本之間,今年上半年更是因?yàn)楣ぷ魅蝿?wù)比較少的關(guān)系,有幾個(gè)月的月閱讀量都在5本以上。同時(shí),我也信奉光讀書(shū)不動(dòng)筆相當(dāng)于沒(méi)讀的道理,所以從去年開(kāi)始,我就開(kāi)始寫(xiě)每個(gè)月的閱讀報(bào)告。那么這就帶來(lái)一個(gè)問(wèn)題——一篇閱讀報(bào)告中,很多工作其實(shí)都是重復(fù)的:

對(duì)于每一個(gè)本書(shū)的review其實(shí)我已經(jīng)在豆瓣讀書(shū)上都寫(xiě)過(guò)了(一般剛一讀完我就會(huì)著手寫(xiě)心得然后發(fā)在豆瓣讀書(shū)上)

組織閱讀報(bào)告格式時(shí),要去豆瓣搜集書(shū)的信息:封面的圖片和豆瓣鏈接

這些工作做起來(lái)又無(wú)聊又容易出錯(cuò)(復(fù)制黏貼很容易黏錯(cuò)或者黏漏了),所以我就萌生了做一個(gè)自動(dòng)生成閱讀報(bào)告的工具。

功能點(diǎn)

做一個(gè)項(xiàng)目之前肯定要先確認(rèn)需要做哪些功能點(diǎn),所以這里先列一下這個(gè)項(xiàng)目的功能點(diǎn)以及完成情況。

豆瓣授權(quán)

由于要讀用戶的豆瓣數(shù)據(jù),那么就要接入豆瓣的API,那么就要先向豆瓣API申請(qǐng)授權(quán)。具體的授權(quán)流程可以參見(jiàn):使用OAuth2.0訪問(wèn)豆瓣API,具體的豆瓣API說(shuō)明可以參見(jiàn):豆瓣開(kāi)發(fā)者服務(wù)。

獲取用戶的讀書(shū)信息

核心功能點(diǎn)。要獲取的數(shù)據(jù)分三塊:圖書(shū)鏈接、圖書(shū)封面和用戶書(shū)評(píng)(review)。同時(shí)這些數(shù)據(jù)的獲取要能按照時(shí)間區(qū)間區(qū)分(用數(shù)字代表月份,0代表全年)。

主要調(diào)用API參見(jiàn):圖書(shū)Api V2。具體的流程分成兩步:

獲取用戶在特定時(shí)間段內(nèi)的『已讀』數(shù)據(jù)信息集合(這一步就可以獲取到圖書(shū)鏈接和封面圖片了)

獲取用戶對(duì)每本書(shū)的書(shū)評(píng)(review)

其中,第一步很好做,因?yàn)锳PI直接提供了這些數(shù)據(jù),第二點(diǎn)就是坑多且深,因?yàn)锳PI并不直接提供,這也是非常值得吐槽的點(diǎn):豆瓣的開(kāi)放API有兩版,但是V2現(xiàn)在就像是還沒(méi)做完就放棄了一樣,根本沒(méi)有完全覆蓋到V1,再具體到用戶書(shū)評(píng)這一點(diǎn)上,V1雖然相較V2是提供了相關(guān)的接口,但是普通權(quán)限只能讀一個(gè)人的所有書(shū)評(píng)并且還不是全文,高級(jí)權(quán)限也沒(méi)有提供具體到特定用戶對(duì)特定圖書(shū)的書(shū)評(píng)的數(shù)據(jù)接口。

因此,對(duì)于第二步,還得將其拆分成三個(gè)小步驟:獲取已讀圖書(shū)ID-->獲取相應(yīng)圖書(shū)所有書(shū)評(píng)-->篩選出當(dāng)前用戶書(shū)評(píng)并直接獲取相應(yīng)頁(yè)面信息-->對(duì)書(shū)評(píng)頁(yè)面的HTML代碼進(jìn)行正則匹配找出書(shū)評(píng)內(nèi)容。本來(lái)在我看來(lái)是應(yīng)該由API提供的數(shù)據(jù),因?yàn)槎拱觊_(kāi)放平臺(tái)沒(méi)有提供,所以只能繞這么大一圈,而且還留下了很多隱患:遍歷所有書(shū)評(píng)需要多次網(wǎng)絡(luò)請(qǐng)求,增加了不可靠性;用正則匹配來(lái)處理HTML頁(yè)面的時(shí)效性問(wèn)題……

生成MarkDown文件

根據(jù)模板,將獲取到的數(shù)據(jù)填充進(jìn)去,生成一篇MarkDown格式的文章。具體的格式可以可以參見(jiàn):四月份閱讀報(bào)告

生成圖片(未完成)

設(shè)定這個(gè)功能的初衷本來(lái)是想方便發(fā)微博和微信,而且以為這個(gè)功能應(yīng)該是有庫(kù)可以支持和提供的。但是等到準(zhǔn)備開(kāi)始做的時(shí)候,調(diào)查一圈之后發(fā)現(xiàn):庫(kù)只有圖片繪制庫(kù),想要完成這個(gè)功能需要自己寫(xiě)很多代碼,而且如果想要生成的圖片格式好看,需要的工作量不亞于再開(kāi)一個(gè)小工程。有鑒于此,就將這個(gè)功能點(diǎn)先延后了,以后如果有時(shí)間的再進(jìn)行補(bǔ)充。

豆瓣API的那些坑

這個(gè)是我在做這個(gè)項(xiàng)目時(shí),遇到的豆瓣開(kāi)發(fā)平臺(tái)的坑,坑是指在API文檔中沒(méi)有指明的或者很容易讓人誤解的地方,這些地方你遇到錯(cuò)誤的時(shí)候完全不知道你自己錯(cuò)在哪里,等在網(wǎng)上查到原因的時(shí)候,第一反應(yīng)就是:『臥槽,這文檔上根本就沒(méi)寫(xiě)嘛,這我怎么能知道?!』,或者『臥槽,這里怎么能這樣設(shè)計(jì),算幾個(gè)意思呀,真特么麻煩呀!』。把這些坑寫(xiě)出來(lái)也是為了能給以后的開(kāi)發(fā)人員節(jié)省點(diǎn)時(shí)間(雖然我現(xiàn)在都覺(jué)得以豆瓣API V2的這個(gè)質(zhì)量,還有沒(méi)有開(kāi)發(fā)人員原因?yàn)槠溟_(kāi)發(fā)應(yīng)用了)。

在獲取access_token時(shí)(https://www.douban.com/service/auth2/token)需要在headers中加入"Content-Type": "application/x-www-form-urlencoded",不然會(huì)一直報(bào)400錯(cuò)誤,提示"required_parameter_is_missing: client_id"。

在獲取當(dāng)前用戶信息時(shí)(https://api.douban.com/v2/user/~me)需要在headers中加入"Authorization": "Bearer " + access_token,不然會(huì)一直報(bào)403錯(cuò)誤。

獲取用戶書(shū)籍收藏信息時(shí),所給出的時(shí)間區(qū)間參數(shù)需要帶『時(shí)區(qū)』不然會(huì)被直接無(wú)視。正確的GET請(qǐng)求URL應(yīng)為:api.douban.com/v2/book/user/findingsea_ly/collections?status=read&from=2015-06-01T13:14:15+08:00&to=2015-07-01T13:14:15+08:00。

豆瓣的API對(duì)于評(píng)論的讀取限制非常多,沒(méi)有辦法用用戶ID和圖書(shū)ID就直接獲取到特定用戶對(duì)于特定圖書(shū)的評(píng)論(reivew),同時(shí)如果獲取特定圖書(shū)的所有評(píng)論信息進(jìn)行遍歷,其中也只能得到用戶評(píng)論的summary(非全文,三個(gè)省略號(hào)結(jié)尾),暫時(shí)想到的辦法也只能通過(guò)對(duì)所有信息的遍歷,得到特定的那一條后再根據(jù)其中的評(píng)論鏈接,用爬蟲(chóng)進(jìn)行爬取。

項(xiàng)目依賴

由于生成圖片的功能點(diǎn)沒(méi)有完成,所以本次只額外用到了一個(gè)網(wǎng)絡(luò)請(qǐng)求包:Requests: HTTP for Humans。

項(xiàng)目總結(jié)

總體而言,DouBanReader是一個(gè)解決了我的實(shí)際需求的小項(xiàng)目,就功能點(diǎn)上來(lái)說(shuō),并沒(méi)有難的地方,但同樣能學(xué)到很多小細(xì)節(jié),比如字符串寫(xiě)入文件前的格式化(Python2中文操作不可避免的)和正則表達(dá)式的使用技巧(去除各種空白、URL解析和HTML正則查找等)。所以我對(duì)這個(gè)項(xiàng)目的完成度和學(xué)習(xí)度就還是挺滿意的,再接再厲吧。

GitHub - findingsea/DouBanReader

以上。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/37567.html

相關(guān)文章

  • 微豆 - Vue 2.0 實(shí)現(xiàn)豆瓣 Web App 教程

    摘要:微豆一個(gè)使用與重構(gòu)豆瓣的項(xiàng)目。在中的配置代理重新啟動(dòng),打開(kāi)查看結(jié)果是否與直接請(qǐng)求豆瓣相同。更多請(qǐng)參考豆瓣電影文檔。它采用集中式存儲(chǔ)管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測(cè)的方式發(fā)生變化。 微豆 Vdo 一個(gè)使用 Vue.js 與 Material Design 重構(gòu) 豆瓣 的項(xiàng)目。 項(xiàng)目網(wǎng)站 http://vdo.ralfz.com/ GitHub https:...

    cjie 評(píng)論0 收藏0
  • 后端好書(shū)閱讀與推薦(續(xù)二)

    摘要:后端好書(shū)閱讀與推薦系列文章后端好書(shū)閱讀與推薦后端好書(shū)閱讀與推薦續(xù)后端好書(shū)閱讀與推薦續(xù)二幾個(gè)月又過(guò)去了,又讀了幾本書(shū),同時(shí)為了深切體會(huì)到某些書(shū)里面的要點(diǎn)還專門(mén)做了一個(gè)小項(xiàng)目,這里就把讀書(shū)與小項(xiàng)目過(guò)程中的一些心得體會(huì)記錄一下。 后端好書(shū)閱讀與推薦系列文章:后端好書(shū)閱讀與推薦后端好書(shū)閱讀與推薦(續(xù))后端好書(shū)閱讀與推薦(續(xù)二) 幾個(gè)月又過(guò)去了,又讀了幾本書(shū),同時(shí)為了深切體會(huì)到某些書(shū)里面的要點(diǎn)還...

    Jioby 評(píng)論0 收藏0
  • 后端好書(shū)閱讀與推薦(續(xù)二)

    摘要:后端好書(shū)閱讀與推薦系列文章后端好書(shū)閱讀與推薦后端好書(shū)閱讀與推薦續(xù)后端好書(shū)閱讀與推薦續(xù)二幾個(gè)月又過(guò)去了,又讀了幾本書(shū),同時(shí)為了深切體會(huì)到某些書(shū)里面的要點(diǎn)還專門(mén)做了一個(gè)小項(xiàng)目,這里就把讀書(shū)與小項(xiàng)目過(guò)程中的一些心得體會(huì)記錄一下。 后端好書(shū)閱讀與推薦系列文章:后端好書(shū)閱讀與推薦后端好書(shū)閱讀與推薦(續(xù))后端好書(shū)閱讀與推薦(續(xù)二) 幾個(gè)月又過(guò)去了,又讀了幾本書(shū),同時(shí)為了深切體會(huì)到某些書(shū)里面的要點(diǎn)還...

    CompileYouth 評(píng)論0 收藏0
  • 23個(gè)Python爬蟲(chóng)開(kāi)源項(xiàng)目代碼,包含微信、淘寶、豆瓣、知乎、微博等

    摘要:今天為大家整理了個(gè)爬蟲(chóng)項(xiàng)目。地址新浪微博爬蟲(chóng)主要爬取新浪微博用戶的個(gè)人信息微博信息粉絲和關(guān)注。代碼獲取新浪微博進(jìn)行登錄,可通過(guò)多賬號(hào)登錄來(lái)防止新浪的反扒。涵蓋鏈家爬蟲(chóng)一文的全部代碼,包括鏈家模擬登錄代碼。支持微博知乎豆瓣。 showImg(https://segmentfault.com/img/remote/1460000018452185?w=1000&h=667); 今天為大家整...

    jlanglang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<