{"id":13815340,"url":"https://github.com/howie6879/owllook","last_synced_at":"2025-05-14T21:08:47.797Z","repository":{"id":41045112,"uuid":"82357171","full_name":"howie6879/owllook","owner":"howie6879","description":"owllook-小说搜索引擎","archived":false,"fork":false,"pushed_at":"2024-07-26T10:37:53.000Z","size":11934,"stargazers_count":2664,"open_issues_count":20,"forks_count":754,"subscribers_count":107,"default_branch":"master","last_synced_at":"2024-10-29T17:50:17.903Z","etag":null,"topics":["asyncio","asyncio-spider","biquge","book","crawler","novel","novels","owllook","python","python3","qidian","ruia","sanic","spider"],"latest_commit_sha":null,"homepage":"https://www.owllook.net","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/howie6879.png","metadata":{"files":{"readme":"README.md","changelog":"HISTORY.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-02-18T03:03:38.000Z","updated_at":"2024-10-24T14:26:11.000Z","dependencies_parsed_at":"2024-07-26T12:14:49.604Z","dependency_job_id":null,"html_url":"https://github.com/howie6879/owllook","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/howie6879%2Fowllook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/howie6879%2Fowllook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/howie6879%2Fowllook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/howie6879%2Fowllook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/howie6879","download_url":"https://codeload.github.com/howie6879/owllook/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248352191,"owners_count":21089398,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asyncio","asyncio-spider","biquge","book","crawler","novel","novels","owllook","python","python3","qidian","ruia","sanic","spider"],"created_at":"2024-08-04T04:03:21.510Z","updated_at":"2025-04-11T06:20:22.519Z","avatar_url":"https://github.com/howie6879.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"## owllook - 在线小说搜索引擎\n\n [![Python3.6+](https://img.shields.io/badge/python-3.6%2B-orange.svg)](https://github.com/howie6879/owllook) [![license](https://img.shields.io/github/license/howie6879/owllook.svg)](https://github.com/howie6879/owllook)\n\n`owllook`是一个基于其他搜索引擎构建的垂直小说搜索引擎，owllook目的是让阅读更简单、优雅，让每位读者都有舒适的阅读体验，如**搜书、阅读、收藏、追更、推荐等功能**：\n\n- ~~演示网址（不维护了，有兴趣自己搭建）~~：[https://www.owllook.net/](https://www.owllook.net/)\n- 公众号：[**粮草小说**](https://www.owllook.net/static/novels/img/lcxs_show.jpg)，有兴趣的话可以关注下\n- 详细安装介绍：[详细安装介绍](https://mp.weixin.qq.com/s/0CqLiKsyDQ-pVmeo3R-UlA)\n- 个人公众号：[老胡的储物柜](https://raw.githubusercontent.com/howie6879/howie6879.github.io/img/pictures/20190529083905.png)\n\n\u003cdiv align=center\u003e\u003cimg src=\"https://cdn.jsdelivr.net/gh/howie6879/weekly/src/statics/wechat.jpeg\"  width=\"85%\" alt=\"img\" /\u003e\u003c/div\u003e\n\n衍生项目：\n\n- 终端看小说： [NIYT](https://github.com/howie6879/NIYT)\n- 小说监控工具：[owllook_gui](https://github.com/howie6879/owllook_gui)\n- 小说接口：[owllook_api](https://github.com/howie6879/owllook_api)\n\n**注意**：若将本项目部署并发行，请**声明来源**，本项目纯属**共享学习之用，不得用于商业！**\n\n### Overview\n\n`owllook`使用了mongodb储存了用户使用过程中的产生的基本信息，诸如注册信息、搜索小说信息、收藏小说数据等，对于某些必要的缓存，则利用redis进行缓存处理，如小说缓存、session缓存，注意，对于限制数据：都将在24小时删除\n\n对于不同网站的小说，页面规则都不尽相同，我希望能够在代码解析后再统一展示出来，这样方便且美观，而不是仅仅跳转到对应网站就完事，清新简洁的阅读体验才是最重要的\n\n目前采用的是直接在搜索引擎上进行结果检索，我尽量写少量的规则来完成解析，具体见[规则定义](./docs/规则定义.md)，遇到自己喜欢的小说网站，你也可以自己添加解析，`owllook`目前解析了超过 **200+** 网站，追更网站解析了**50+**\n\n有一些地方需要用到爬虫，比如说排行榜，一些书籍信息等，我不想动用重量级爬虫框架来写，于是我在owllook里面编写了一个很轻量的爬虫框架来做这件事，见 **[ruia](https://github.com/howie6879/ruia)**\n\nBTW，sanic写界面确实不是很方便，至于为什么写这个，一是想利用`sanic`尽量做成异步服务，二是想就此练习下推荐系统，顺便作为毕业设计\n\n#### Installation\n\n请先装好mongo以及redis，不会安装mongo看[这里](https://www.digitalocean.com/community/tutorials/how-to-install-mongodb-on-centos-7)，`owllook`使用`pipenv`管理虚拟环境，所以使用前请确保安装一个`Python3.6`环境（比如我这里环境路径在`/Users/howie/anaconda3/envs/python36/bin/python3.6`），然后安装好`pipenv`\n\nmongo以及redis装好后，进入项目目录，依照步骤执行：\n\n```shell\n# 下载代码\ngit clone https://github.com/howie6879/owllook\ncd owllook\npip install pipenv\n# 请先提前创建好Python3.6环境\npipenv install --python /Users/howie/anaconda3/envs/python36/bin/python3.6 --skip-lock\n# 进入虚拟环境\npipenv shell\n\n# 先配置好相关数据库配置，具体看`config/dev_config.py`\n\n# 方案一\n# 运行：\ncd owllook\npipenv run gunicorn -c owllook/config/gunicorn.py --worker-class sanic.worker.GunicornWorker owllook.server:app\n\n# 方案二 推荐 \n# 安装docker并打包镜像\ndocker build -t howie6879/owllook .\n# 实际运行\ndocker-compose up -d\n# 退出\ndocker-compose down\n```\n\n#### Features\n\n- 多搜索源\n- 丰富的解析源\n- 界面统一解析\n- 完善的阅读体验\n- 搜索记录\n- 缓存\n- 书架\n- 书签\n- 登录\n- 初步兼容手机（后续跟进）\n- 注册（开放注册）\n- 上次阅读记录\n- 最新章节\n- 书友推荐（简单地基于相似度进行推荐）\n- 目录获取\n- 翻页\n- 搜索排行\n- 章节异步加载 感谢@[mscststs](https://github.com/mscststs)\n- 排行榜 - 起点+owllook\n- 自带爬虫框架，统一爬虫规范，对爬虫感兴趣的可以看看 - [ruia](https://github.com/howie6879/ruia)\n\n#### TODO\n\n- [ ] 评分\n- [ ] 阅读书单\n- [ ] 推荐\n- [ ] 小说圈 - 小说界的消息\n\n### Screenshots\n\n首页:\n\n![](https://ws1.sinaimg.cn/large/007i3XCUgy1fynmmhyim2j31hc0r140i.jpg)\n\n搜索：\n\n![](https://ws1.sinaimg.cn/large/007i3XCUgy1fynmkbqzf3j31h70qz42y.jpg)\n\n榜单：\n\n![](https://ws1.sinaimg.cn/large/007i3XCUgy1fynmdwg8tpj31gv0qt42e.jpg)\n\n书架：\n\n![books](./docs/imgs/book.jpeg)\n\n目录解析页：\n\n![demo](./docs/imgs/chapter.png)\n\n阅读：\n\n![content](./docs/imgs/content.png)\n\n### FAQ\n\n**为什么首页榜单为空白？**\n\n这个是根据小说搜索次数显示的，每天刷新一次，使用多了就会有\n\n**为什么会出现302跳转？**\n\n为了防止直接运行服务被恶意域名绑定，所以作出如下修改：\n\n```shell\nvim config/config.py\n# 将 true 改为 false\nVAL_HOST = os.getenv('VAL_HOST', 'true')\nVAL_HOST = os.getenv('VAL_HOST', 'false')\n```\n\n**小说榜单页面为什么没有内容？**\n\n需要运行`owllook/spiders/spider_console.py`，\n目前代码中是设定60分钟运行一次，运行的时候请酌情更改，\n`os.environ['MODE'] = 'PRO'` 这段代码也请注释掉\n\n### Reference\n\n**owllook使用了以下第三方包:**\n\n- sanic：基于Python 3.5+的异步web服务器\n\n- motor：异步的mongodb驱动\n\n- ​Jinja2：基于python的模板引擎\n\n- aiohttp：异步请求\n\n- caddy：基于go的web服务器\n\n  …...更多见Pipfile，感谢开发者\n\n**web框架：**\n\n- [bootstrap](https://github.com/twbs/bootstrap)：Sleek, intuitive, and powerful front-end framework for faster and easier web development. \n- [mdui](https://github.com/zdhxiong/mdui )：MDUI 是一个基于 Material Design 的前端框架\n\n### License\n\n`owllook` is offered under the Apache 2 license.\n\n### Donate\n\n**捐赠：**\n\n\u003e 美酒加咖啡，我只要喝一杯～\n\n\u003cimg src=\"https://raw.githubusercontent.com/howie6879/howie6879.github.io/img/pictures/20190904201512.png\" width = \"400\" height = \"400\" alt=\"donate\" align=center /\u003e\n\n\n感谢以下捐赠者，具体见[捐赠名单](./DONATE.md) ^_^\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhowie6879%2Fowllook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhowie6879%2Fowllook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhowie6879%2Fowllook/lists"}