[教程分享] 我是如何写爬虫并且快速建立三个图片站

2017-02-13 21:47:28 +08:00
 darranhuang
大家也看到之前几周我推的三个网站 [ 1000 系列]
* 一下子打开 1000 张 GIF http://iguooo.com/
* 妹子 x100 http://www.wulangdashu.com/
* 十万个日式冷笑话 http://www.iguooo.cn/

也是我无聊至极写写爬虫,快速搭建的几个网站。

我会说几个关键点,
1. 爬虫
2. 建站
3. 费用, 为什么有广告
4. 粘度 & SEO 的反思



一。 爬虫

研究了下几个著名的爬虫框架:
* PySpider
* Scrapy

这几个都是比较广义的爬虫,给一个入口然后通过页面中的链接不断抓取。
对于我来说,我有特定的目标页面和目标页面特定的元素需要爬取。
于是便放弃了大型框架, 自己做一个定义一个小型脚手架。

自定义的爬虫,就是维护一个队列,维护一个消费者线程池和一个生产者线程池。外加一个 monitor 线程用于统计队列情况。



* 利用 Redis 的原子性操作,可以做去重。
* 利用 Redis List 的 push , pop 的原子性可以做同步的生产消费队列
* 爬取网页用了 requests + BeautifulSoup 分析
* 资源后续处理使用 requests 下载资源,七牛的库上传七牛云端
* 想持续抓取,可以将爬虫加入到 celery 定时任务中

BaseSpiderClass 代码 : https://gist.github.com/awanabe/a94ead037249f497a110763beb08942b



二:建站

因为是做着玩的项目, 爬虫和 web 部分都放在一个项目中。
然后现在一个项目里面要承接多个 web 项目,每一个项目用的是独立域名,所以就放弃了使用 Flask 的 Blueprint 来配置子域名。
(有兴趣配置 Blueprint 的同学可以移步 https://github.com/awanabe/FlaskBluePrintDemo 我老早做的一个 Blueprint 的 demo )

于是就对原先的 nginx -> uwsgi -> flask 的模式做了一对多的改进。

> 原先一般的 Flask 项目结构是这样的

├── config.py # 配置文件
├── main.py # 项目入口, 从 service 中引出 flask app ,供 uwsgi 调用
├── service # 项目
├── ├── static # 静态文件夹
│   │   ├── css
│   │   ├── fonts
│   │   ├── img
│   │   └── js
│   ├── templates # 模板文件夹
│   └── router.py # flask app 初始化 + router
└── requirement.txt


> 改造之后,建立多个项目和对应的项目入口,静态资, config 文件,工具类,数据 model 都可以公用。

├── config.py # 配置文件
├── static # 静态文件夹
│   ├── css
│   ├── fonts
│   ├── img
│   └── js
├── utils
├── model.py

├── main_01.py # 项目入口, 从 service 中引出 flask app ,供 uwsgi 调用
├── service_01 # 项目
│   ├── templates # 模板文件夹
│   └── router_01.py # flask app 初始化 + router

├── main_02.py
├── service_02
│   ├── templates
│   └── router_02.py

├── main_03.py
├── service_03
│   ├── templates
│   └── router_03.py

└── requirement.txt





* nginx 配置多域名
* uwsgi 开启多 worker 模式,尽可能的
* 节约公共云资源,使用本地静态资源配置,所以开启了 nginx 的静态资源域名
* 全部存储都基于 Redis ,不使用 MySQL 。数据库在服务器中占用内存, IO 都是挺大的。直接用 Redis 查询写入速度大大提升。

这样就在一台主机,一个项目里面建立起了多个网站。


三。费用, 为什么有广告

> 支出
* 阿里云服务器 1G 内存 + 1Core + 3M 带宽 = 150 元 /月
* 七牛 因为我的自信,直接 po 上了 1000 张 GIF 的页面, 导致半天时间消耗流量 500G 。 直接扑街, 耗费 150 元。然后改为本机做静态资源
* 域名 2 个 com+1 个 cn = 100 左右
* 在 V2EX 上置顶,消耗 2000 个铜币 ~ 60 元吧
* 时间 5x8 小时

> 收入
* 在被七牛重重打击之后,无奈加上了 adsense 广告。有两天因为 V 友帮忙点击,超过了 1 刀一天。大部分一天 0.1~0.5 刀直接 = 8 刀 /28 天

== 巨大的坑。不可能回本嘛。。所以骂我广告🐶的然后 Block 我的,我真心不是愿意挂广告的。


四。粘度 & SEO 的反思

* 一共三个网站,流量比较好的是 GIF 和日式冷笑话,单纯的妹子图不怎么样。 流量比 10 : 1 。 => 有故事有阅读的内容比较有粘度
* 网站内容的增长几乎为 0 ,我大部分都是一次性爬取的资源。 而且以图片为主,导致搜索引擎无法抓取有效关键词。从搜索引擎进来几乎为 0 。(有评论会好点
* 图片类型网站重资源消耗,所以文字类型网站 SEO 会好做很多。
* 在 V 站,妹子图的帖子的收藏很高很高,回复超级少(宅男们,你们很厉害。。
11534 次点击
所在节点    分享发现
72 条回复
huluhulu
2017-02-14 14:51:17 +08:00
@awanabe CloudFlare ,国内的垃圾不要用。
mengyang
2017-02-14 15:25:44 +08:00
赞一个,感谢支持下
Kilerd
2017-02-14 15:53:25 +08:00
反正我是找不到什么盈利的方法,现在基本都是在贴钱买 VPS , 无奈啊。
iPhone8
2017-02-14 17:33:51 +08:00
你先说一天多少流量吧?有没有 200+uv ?
roist
2017-02-14 17:37:03 +08:00
学那些不可描述的图片站,使用外国主机
darranhuang
2017-02-14 18:50:11 +08:00
@iPhone8 你觉得 v 站连 200 个 uv 都贡献不了嘛?
darranhuang
2017-02-14 18:51:11 +08:00
@roist 不可描述的网站图片一直要换图床 哪天图床玩坏了 网站也就玩坏了
TimLang
2017-02-14 18:57:56 +08:00
可以用 s3 啊,不然楼主无法继续做下去,如果每天 2g 图片的增长量, vps 硬盘很快就被写满,用 s3 第二等级的存储每个月才 0.019 每 gb ,图片访问可以靠免费的 cdn 。
iPhone8
2017-02-14 23:32:37 +08:00
@darranhuang 1000uv 有没有?
流量这么多才 8dollar/28 天,感觉有点少啊。。。
iPhone8
2017-02-14 23:33:03 +08:00
也算正常,毕竟 v 站点广告的不多。
LINAICAI
2017-02-15 00:05:52 +08:00
...挺无聊的,还不如写个 app ,直接分析 html 做移动广告,不过同样没前途,这么简单能赚钱, v2 的用户就不止这点了。
akira
2017-02-15 00:09:36 +08:00
@TimLang s3+cf ?

按照 lz 的这个级别的用户,上 cdn 其实大部分流量都是回源的。
fuxkcsdn
2017-02-15 00:12:10 +08:00
妹子图,日式冷笑话…你告诉我不是爬煎蛋的…
darranhuang
2017-02-15 03:28:54 +08:00
@iPhone8 而且 v 站大部分应该都转了 adblock
darranhuang
2017-02-15 03:30:38 +08:00
@akira 命中率才 20 多
darranhuang
2017-02-15 03:30:58 +08:00
@fuxkcsdn 不是
t6attack
2017-02-15 03:47:30 +08:00
想看如何赚钱的,可以到网赚类论坛里翻翻。类似教程很多,一堆一堆的。而且十年前是这类文章最多的时候。
后来百度为了打击采集和伪原创,大规模升级了排名算法。把此类手段压下去了。
darranhuang
2017-02-15 10:08:04 +08:00
@t6attack 现在这样的网站比重很低。。直接判定为垃圾站
velee
2017-02-15 12:16:04 +08:00
1 图片站匹配 adsense 本身的关键字匹配度就不好,另外 adsense 的平均单价会比较低
2 图片站的关注点在图片,文字居多的 adsense 的注意力完全不够,国内的那种美女图片+文字的小贴片猎奇广告可能更合适一些。
3 图片站资源消耗大,尤其在国内带宽比较贵的情况下,盈利难度比文字站点大多个量级。
4 美女图片属于快消品,不能留住用户,流量损失太快,后续投入过大。
Yourdaye
2017-02-15 12:29:32 +08:00
@t6attack
@darranhuang 10 年老站长想说,百度原创算法就是个渣渣,本人亲自做个测试,随便弄个站, seo 也随便搞一搞(找一些不是很热门的搜索词,反向 seo ),几个月之后, 2 , 3 千 IP 妥妥的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/340246

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX