晒美胸图片站开发过程

上周四花了整整一个下午扒了牧风同学的iphoto主题,直接复制了牧风开源的主题中图片和样式表目录,然后用firebug手动扒的HTML结构。瀑布流用的jquery.masonry而没有直接扒牧风同学的jquery.waterwall「因为牧风同学的js简单混淆了,重新梳理一遍的时间足够我写个简单的瀑布流了」。

再用了不到一个小时简单写了一个根据关键词抓取渣浪微博图片的小代码:入库、分页显示、瀑布流。简陋的甚至连一个后台都没有。把抓取图片的URL直接扔给uptimerobot监控起来,这样就可以实现自动抓取图片自动入库了。

赶在下班前简单的部署在了SAE上,周五开始就放假休端午节。周六才有时间上网看了一下,发现uptimerobot报了一些5xx错误,但数据也自动抓了几百条。简单暴力的try:except屏蔽掉了异常,然后打包放在了hostloc上下载。

周日晚上回京在电脑上才发现有几十人下载,但基本没几个回复也没几个加分的:(。意料之中的事,一则Python环境少,二则这个代码基于SAE,SAE Python的人更少了。

看到有人反映图片显示太慢,页面也卡的情况。去掉了masonry的特效,然后将原来直接加载大图的方式修改成先加载小图,然后用jquery.lazyload再加载大图的方式,虽然这样有人会没等到清晰大图加载完全就说图片质量不高,但能看到图比连图都看不到要来的好吧。

周二晚上发现抓取到的数据中虽然图片一样,但不同人转发的话图片的URL却也会变化,造成抓取到的1000多条数据中有将尽一半的图片是重复的,尤其一些热门的娱乐新闻中的图片经常一片一片的出现。周三一早用Twitter bootstrap框架写了一个管理后台「只有登录、删除文章、修改密码」功能,文章设置了删除标志位,没有物理删除因为我的抓取数据是用url转int做筛选来去重的。

周三新建了自己的域名meixiong.au92.com反代到SAE上,因为反代的nginx我设置了一定时间的缓存,结果后台删除了重复数据后页面上不能时时更新,经常还有一片一片的相同图片在页面上。所以周四操刀设置默认抓取进来的图片是待审核状态,然后给后台管理图片的地方设置了三个Tab「待审核图片、审核通过图片、回收站」,回收站里放的之前设置为删除状态的图片,这样抓取进来的数据只需要过两三个小时进后台手动审核一下即可。

放一张俺的漂漂后台截图:


最后必须夸俺这个简单系统的特点:

  • 自动更新数据,垃圾站必备特性
  • 瀑布流「三俗之一,但不可否认的看起来效果不错」
  • SAE免费空间即可运行,省钱
  • 图片均外链自新浪微博,省豆
  • SAE Python抓取外网资源现在是不像PHP版SAE那样消耗大量资源的!仅消耗来回来流量费用即可
  • 一个SAE应用可以建最多10个站点!

代码开源位置:https://bitbucket.org/chairo/mxiong

已有13条评论 »

  1. 菜鸟

    @菜鸟 搞定了。!~

  2. 菜鸟

    我想问一个关于那个瀑布流和无限下拉的问题!~~恳请回复!!~~~http://hanc2012.w88.en.tm/knowledge/index.html地址在这里。你看下源代码。不知道问题出在哪里。加载不了新的内容到container里面?

  3. sharkli

    多谢博主分享。

  4. @Chairo 很好,我试试。非常感谢!

  5. @咖啡豆 表结构直接复制pics这张表即可,再批量把「core\dal\pics_handler.py」中「`pics`」替换成不同的表名即可。然后再修改每个版本下的「setting.py」的KEYWORD,这样一下10个不同的网站就诞生了~

  6. @Chairo 但数据库只有一个啊?!能10个版本共用一个数据库么

  7. @咖啡豆 一个应用可以建10个版本,每个版本都用一个nginx去反代即可

  8. 一个SAE应用可以建最多10个站点这个怎么做呢

  9. 很好用谢谢http://tupian.kafeidou.org

  10. 安装说明如果部署到SAE请直接看SAE的官方文档第一次安装直接将install.sql导入SAE的数据库修改setting.py中站点标题及open.weibo.com中申请到的APPKEY即可修改config.yaml中版本号及name为你自己的如果之前已经下载过我提供过的上一版本代码,需执行update.sql后台地址http://xxx.sinaapp.com/admin(注意没有最后的/)默认用户名111@1.cn密码111,可进后台修改,不可直接修改数据库中用户名如希望修改成自己用户需注释掉app.py中「'''注册用户'''」下的「return""」行,然后在登陆的地方填入你自己的email按照提示注册,然后务必将之前注释的代码恢复,然后进数据库删除111@1.cn行记录,用你自己注册的用户名密码登陆即可

  11. deja.vu

    上传到SAE,但是不知道该怎么安装,访问地址就显示“WelcometoSAE!”。博主指导一下吧,谢谢了先。

  12. 利用uptimerobot的监控达到定时抓取入库的想法挺不错的,赞一个~

  13. neer

    学习了,谢谢!最近一直在研究python的采集相关,很有启发。

添加新评论 »