从python开始一个全栈项目 程序员&设计师福利篇

更新 7月16日18点

现在不会自己写代码调用API的同志们可以直接访问咯

地址 datastack.cc/design
更新一张预览图:

图片发自简书App

图片发自简书App
更新 7月16日12点

现在我们可以愉快的使用了,flask API和后台服务已经部署在了服务器上(新加坡)!!!

地址 http://api.datastack.cc

恩,更新一下,目前已经可以在HTML页面进行数据展示了:

web界面运行效果图
配图纯属为了好看

我在说什么

声明:
1.我不是一个标题党
2.我一般只提供干货

事实上,我实在干这样一件事,他大概分为如下几个步骤:

一、获取一些优秀的设计素材的数据
二、存储和筛选这些数据
三、编写一套API提供数据
四、编写一个网页调用API 展现数据
五、编写iso和android客户端展现数据

应用场景:
当你在闲暇的时候,打开手机或者网页,查看一下最近有没有什么好的设计素材或者比较感兴趣的HTML页面。
恩,你可能看到很多,突然发现一个让你眼前一亮的,然后你手藏了他。
有一天你正在写一个HTML页面或者设计产品原型,突然,你的脑子里闪过一些东西,于是你打开了你的手机查看了一下收藏夹......

接下来,我们就来看看,如何实现:

数据获取

首先,数据主要是从各大免费的设计素材资源网站拿到的,这需要用到python爬虫。
其次,这类网站大量的使用了JS来加载内容,我选择selenium+phantomJS渲染JS。
最后,从爬取到的内容内获取想要的,我选择用pyquery来获取html节点(不要问为什么,因为我习惯用jquery!)

存储数据

数据结构

数据结构很简单,我不过就是想获取一张预览图,一个预览地址(或者下载地址),还有标题!
一条数据大概会是这样:

{
  "download": "http://www.doooor.com/thread-2762-1.html",
  "preview": "http://img.doooor.com/img/forum/201404/16/173909sczpof6sf26eckcf.jpg.thumb.jpg",
  "title": "STARS TOUCH 完全扁平化网页设计"
}
数据持久化

我们对数据的存储要求不是很高,因为最近在学习redis,所以就用redis,利用快照持久化!

爬虫的框架

一、我不懂什么框架,而且总体来说,要爬取得网站就那几个。自己编写一下规则就好了。
二、避免重复工作,用redis来存储待爬和爬过的url。
三、分布式? 哈哈,也许,可能大概是支持的吧。
四、效率?使用了selenium和phantomJS,貌似不用谈效率了,不过有些优化的小知识啦!
五、我是怎么实现的:
首先,我定义了一个爬虫服务 service.py,主要作用是连接redis,开始爬取工作,记录工作内容和工作结果。
然后,我写了一个爬虫工具 servicetools.py, 主要作用是模拟浏览器访问url,查找需要的元素和内容。

service.py 管理者-劳动者模式 (管理者Master发布任务,劳动者Work进行具体工作.)

管理者维护一个Redis 的 List 按照先进先出的模式, 每次发布一个url出去
劳动者接收到管理者的url,开始执行网页爬取工作,工作完成后 管理者pop掉这个url
劳动者如果获取的数据是url,则封装成list 提交给管理者, 管理者挨个push url.

servicetools.py(具体的网页爬取工作)

使用phantomJS和selenium结合,使用pyquery进行节点和内容的获取,不同的网站需要不同的规则。

目前实现的功能 和存在问题:

总体来说,运行良好,效率足够(根本不是实时系统嘛)!
额,比较费内存,可以在晚上睡觉之前执行,偶尔会出现假死,主要是phantomJS的优化没做!
如果程序异常推出,再次启动依旧能够继续工作,且不重复之前工作!

API的实现

上面的爬虫运行半个小时之后,大概就会有500多条有效数据,这些数据全部被存在redis里面(hset)。
可以参见我之前的文章快速入门 基于Flask实现Restful风格API,比较详细的介绍了如何使用flask来实现一个restful的API。

这里的flask程序需要从redis拿数据,我自己定义了一个数据源(连接redis分发数据)。

目前已经完成的工作

目前已经基本实现API获取数据,爬虫还正在努力的运行,稳定以后,将会设置系统任务,在每天半夜3点开始,五点结束。

看一张效果图吧:

API 可以返回简洁有用的数据
随便点击一个,预览图片也很不错呢

下一步的工作

继续发现和修补爬虫的bug
增加用户系统和认证机制,这样大家就可以收藏了
租一个云主机(求有需求的伙伴打赏)
编写客户端

公开源代码

github地址

最后,如果你对这个项目感兴趣,请发我简信,或者直接在下面评论!
还有,服务器好贵,真希望有人能打赏,让我早点把API公开。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,817评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,329评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,354评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,498评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,600评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,829评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,979评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,722评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,189评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,519评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,654评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,940评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,762评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,993评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,382评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,543评论 2 349

推荐阅读更多精彩内容