owllook -- 一個(gè)簡(jiǎn)潔的網(wǎng)絡(luò)小說(shuō)搜索引擎

owllook-demo

0.前言

偶爾內(nèi)容會(huì)更新在博客,文章博客地址點(diǎn)這里
事情的起因是這樣的部默,前段時(shí)間在把之前寫的一些同步網(wǎng)絡(luò)請(qǐng)求代碼改成異步的,用的是aiohttp造虎,既然是請(qǐng)求傅蹂,那請(qǐng)求什么呢,就百度吧算凿,請(qǐng)求什么內(nèi)容呢份蝴,我隨手一輸自己最近看的一本小說(shuō),然后作為練手用氓轰,就做了這個(gè)婚夫,我將其取名為owllook,準(zhǔn)備做成一個(gè)推薦系統(tǒng)戒努,所以我就將其部署上去请敦,這才有了這個(gè)網(wǎng)站。

上一篇介紹了自己在使用sanic過程中遇到的一些問題储玫,這次就想介紹下這個(gè)owllook--novels_search侍筛,上面是演示demo,具體可以見http://www.owllook.net/
本項(xiàng)目純屬共享學(xué)習(xí)之用撒穷,不得用于商業(yè)匣椰!
首先我想說(shuō)下目前的項(xiàng)目進(jìn)度:

v0.1已經(jīng)上線:

  • 小說(shuō)的基本搜索解析功能
  • 搜索記錄
  • 緩存
  • 書架
  • 書簽
  • 登錄(暫時(shí)不開放注冊(cè),可與我申請(qǐng)?bào)w驗(yàn)

TODO:

  • [ ] 注冊(cè)
  • [ ] 閱讀書單
  • [ ] 手機(jī)端兼容
  • [ ] 推薦
  • [ ] 排行榜
  • [ ] 個(gè)人中心

1.介紹

owllook的思路很簡(jiǎn)單端礼,利用百度檢索出來(lái)的結(jié)果禽笑,進(jìn)行過濾解析后再展示,使用的技術(shù)如下:

  • sanic:基于Python 3.5+的異步web服務(wù)器蛤奥,快快快
  • sanic_session:sanic的持續(xù)會(huì)話插件
  • vloop:sanic默認(rèn)使用uvloop佳镜,替代asyncio本身的loop
  • motor:異步的mongodb驅(qū)動(dòng)
  • aiohttp:異步請(qǐng)求
  • aiocache:異步緩存,本項(xiàng)目改用了其中的decorator部分凡桥,緩存數(shù)據(jù)庫(kù)使用redis

對(duì)于用戶的一系列操作信息蟀伸,使用mongodb進(jìn)行存儲(chǔ),而緩存則使用redis缅刽。

對(duì)于不同網(wǎng)站的小說(shuō)啊掏,頁(yè)面規(guī)則都不盡相同,我希望能夠在代碼解析后再統(tǒng)一展示出來(lái)衰猛,這樣方便且美觀迟蜜,而不是僅僅跳轉(zhuǎn)到對(duì)應(yīng)網(wǎng)站就完事,清新簡(jiǎn)潔的閱讀體驗(yàn)才是最重要的啡省。

目前采用的是直接在百度上進(jìn)行結(jié)果檢索娜睛,也不是不能做的更大更全髓霞,只是覺得沒什么意義,目前的檢索結(jié)果已經(jīng)很足夠微姊。

我盡量寫少量的規(guī)則來(lái)完成解析酸茴,具體見規(guī)則定義,遇到自己喜歡的小說(shuō)網(wǎng)站兢交,方便諸位添加解析薪捍。

一般都是在下班時(shí)間編寫這個(gè)項(xiàng)目,目前v0.1版本大概實(shí)現(xiàn)配喳。

后期我準(zhǔn)備將基礎(chǔ)功能寫好之后酪穿,能夠?qū)崿F(xiàn)小說(shuō)與kindle之間的對(duì)接。

2.解析

這個(gè)項(xiàng)目的思路與技術(shù)都比較簡(jiǎn)單晴裹,但是小說(shuō)網(wǎng)站的解析工作是很難全部解析完畢被济,下面我將舉個(gè)例子怎么具體的解析一個(gè)網(wǎng)站,歡迎各位添磚加瓦涧团,請(qǐng)先看一遍規(guī)則定義只磷。
解析也很簡(jiǎn)單,只要求有點(diǎn)html以及css基礎(chǔ)即可泌绣。

首先進(jìn)入網(wǎng)站http://www.owllook.net/
搜索:

01

注意第一條結(jié)果顯示未解析钮追,這就是我們要解析的對(duì)象了,點(diǎn)擊進(jìn)入源網(wǎng)站阿迈,審查小說(shuō)目錄對(duì)應(yīng)的元素元媚,這里顯示的是:class="mulu_list,然后注意其content_url類型是0

02

進(jìn)入小說(shuō)章節(jié)內(nèi)容頁(yè)面苗沧,審查元素可以看到id=htmlContent刊棕,所以content_selector=htmlContent

接下來(lái)進(jìn)入項(xiàng)目,打開config/rules.py文件待逞,在RULES字典中加入:

'www.ybdu.com': Rules('0', {'class': 'mulu_list'}, {'id': 'htmlContent'}),

這時(shí)候再重啟服務(wù)甥角,刷新頁(yè)面:


03

可以看到未解析變成了已解析,這時(shí)候點(diǎn)擊進(jìn)入识樱,會(huì)出現(xiàn)兩種情況:

  • 排版完整蜈膨,不需要再寫樣式,此時(shí)請(qǐng)直接解析章節(jié)內(nèi)容
  • 排版不行牺荠,需要寫樣

現(xiàn)在我演示的這個(gè)鏈接排版就是顯示不行,請(qǐng)打開/static/novels/css/chapter.css文件驴一,在編寫之前休雌,請(qǐng)先看下面這張圖:

04

圖中.mulu_list1:打錯(cuò)了表示區(qū)域1,.mulu_list1:表示區(qū)域3.

首先更改區(qū)域1的樣式肝断,我已經(jīng)在代碼注釋寫了各個(gè)區(qū)域樣式代碼在哪杈曲,直接更改就行驰凛,比如:

/* 區(qū)域1 */
.mulu_list, .acss, .list, #xslist ul, .dirlist, .list-chapter, .list_box ul, #defaulthtml4 table, .article-list > dl, .update, #list .box, .bookcontent > dl, .listmain > dl, .ml_main > dl, #list dl, #chapter_list, .chapterlist, tbody, .mt10, .catalog, #readerlists {
    float: left;
    overflow: hidden;
    padding-bottom: 1px;
    margin: auto;
    background: #F6F4EC;
    border-radius: 15px;
}

可以看到加上了.mulu_list,以此類推担扑,最后解析完畢之后如下圖:

05

注意章節(jié)內(nèi)容里面一些無(wú)關(guān)的鏈接以及原本網(wǎng)頁(yè)自帶的上一章下一章需要隱藏掉哦恰响。

3.總結(jié)

功能還很簡(jiǎn)單,解析的網(wǎng)站有很多涌献,希望各位添磚加瓦胚宦,容我奉上項(xiàng)目地址:owllook--novels_search,歡迎issue和star燕垃。

僅供分享交流 不可用于商業(yè)用途

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末枢劝,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子卜壕,更是在濱河造成了極大的恐慌您旁,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,807評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件轴捎,死亡現(xiàn)場(chǎng)離奇詭異鹤盒,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)侦副,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門侦锯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人跃洛,你說(shuō)我怎么就攤上這事率触。” “怎么了汇竭?”我有些...
    開封第一講書人閱讀 169,589評(píng)論 0 363
  • 文/不壞的土叔 我叫張陵葱蝗,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我细燎,道長(zhǎng)两曼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,188評(píng)論 1 300
  • 正文 為了忘掉前任玻驻,我火速辦了婚禮悼凑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘璧瞬。我一直安慰自己户辫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評(píng)論 6 398
  • 文/花漫 我一把揭開白布嗤锉。 她就那樣靜靜地躺著渔欢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瘟忱。 梳的紋絲不亂的頭發(fā)上奥额,一...
    開封第一講書人閱讀 52,785評(píng)論 1 314
  • 那天苫幢,我揣著相機(jī)與錄音,去河邊找鬼垫挨。 笑死韩肝,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的九榔。 我是一名探鬼主播哀峻,決...
    沈念sama閱讀 41,220評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼帚屉!你這毒婦竟也來(lái)了谜诫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,167評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤攻旦,失蹤者是張志新(化名)和其女友劉穎喻旷,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體牢屋,經(jīng)...
    沈念sama閱讀 46,698評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡且预,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了烙无。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锋谐。...
    茶點(diǎn)故事閱讀 40,912評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖截酷,靈堂內(nèi)的尸體忽然破棺而出涮拗,到底是詐尸還是另有隱情,我是刑警寧澤迂苛,帶...
    沈念sama閱讀 36,572評(píng)論 5 351
  • 正文 年R本政府宣布三热,位于F島的核電站,受9級(jí)特大地震影響三幻,放射性物質(zhì)發(fā)生泄漏就漾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評(píng)論 3 336
  • 文/蒙蒙 一念搬、第九天 我趴在偏房一處隱蔽的房頂上張望抑堡。 院中可真熱鬧,春花似錦朗徊、人聲如沸首妖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)悯搔。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工励幼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留耗跛,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,359評(píng)論 3 379
  • 正文 我出身青樓节芥,卻偏偏與公主長(zhǎng)得像在刺,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子头镊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評(píng)論 2 361

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,334評(píng)論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理蚣驼,服務(wù)發(fā)現(xiàn),斷路器相艇,智...
    卡卡羅2017閱讀 134,716評(píng)論 18 139
  • 書本折角的地方一定要捋直了获讳,衣服一定要疊整齊了,像這樣強(qiáng)迫癥的表現(xiàn)活喊,明星們也有的丐膝。不但如此,有的明星的強(qiáng)迫癥表現(xiàn)太...
    首席娛記閱讀 640評(píng)論 0 1
  • 親愛的李先生,自從跨年后這是我們分開后的五個(gè)月了吧结缚,會(huì)想到那時(shí)候的我有多難受损晤,此刻想到都有些心酸。奇怪红竭,明明你對(duì)我...
    哇你好棒啊閱讀 230評(píng)論 0 0
  • 成長(zhǎng)不是一夜就長(zhǎng)大了尤勋,而是逐漸完成的,我喜歡走捷徑茵宪,那是因?yàn)槲矣X得假如有更好的辦法最冰,為什么不用呢。有人說(shuō)成長(zhǎng)就是多...
    追求更好的生活閱讀 164評(píng)論 0 1