把抽奖活动写成一篇技术博客是怎样一种体验

把抽奖活动写成一篇技术博客是怎样一种体验

本次活动预备知识贴:天罗地网——Python爬虫初初初探

http://blog.csdn.net/eclipsexys/article/details/48193541

请一定先了解下,不然就真的是为了抽奖了!

抽抽抽抽抽抽奖

我的新书《Android群英传》上市不久,为了回报各位的大力推荐,也希望更多的人能多多支持,特准备此次抽奖活动。

抽奖对象

只要在本博客中留言,即可参与抽奖活动。

留言内容如下:

  1. 已购买《Android群英传》的朋友,请在微博中发帖并@Tomcat的猫 (http://weibo.com/1904977584),并在本博客中贴出你的微博地址
  2. 或者直接贴出购买链接的地址,并告知我你的用户名
  3. 如果你还未购买,那就帮忙转发微博(宣传本书即可,最好配图哈),获得15个以上赞(我肯定会帮你赞的哈~~),并在本博客中贴出你的微博地址
  4. 以前在微博、微信中已经宣传过的,只要在评论中@我一下,并在本博客中留言——“已宣传”,并写上你的微信号,就OK了

PS 请不要重复评论,虽然可以增加我的人气,但对抽奖概率,不会有丝毫影响哦。

PS 请不要欺骗医生真挚纯洁真诚善良的心!

PS 如果你不要我的书也不要我的补贴,但是你却中奖了,那请你直接来上海,浦软大厦703,我!请!你!吃!食!堂!。

奖品!!!

  • 未购买《Android群英传》的,奖品为签名版《Android群英传》一本(如果觉得我的字太丑,我也支持画押)
  • 已购买《Android群英传》的,奖品为报销你的买书钱

写书不易,一本书我只赚4块钱,请大家本着社会主义的核心价值观,请不要欺骗我真挚的感情~~~~

奖品数量

(comments / 40) + 1

截止时间

抽奖时间,暂定于2015年9月25日中秋前夕。希望给大家带来一份不错的中秋礼物。



下面是技术帖下面是技术帖下面是技术帖下面是技术帖


如何实现抽奖

抽奖的方式很简单,统计所有的有限留言,获取他们的用户名,通过随机数来确定中奖的人的用户名。

作为一个技术宅,我当然不想自己去统计,能自动化的就不要用女朋友,能写脚本的就不用女朋友。所以,本博客的实际目的在于教大家如何正确的去使用女朋友,哦,不对,是正确的使用脚本。

分析

首先我们来看CSDN博客的评论系统。

哎呀我真不是故意截这么多赞美的,请无视。

我们打开Chrome的审核元素:

用放大镜找到用户名:

然后点击右键去找源代码,可是,我们突然发现,不对呀,源代码中根本就没有这些评论信息啊。

哦,这样应该也对,评论的加载,应该是用ajax的吧,不然我们每次评论后,肯定会刷新整个页面咯。

OK,那么我们就来到Network标签,刷新页面,获取数据:

显示评论所调用的js,就在这些文件当中,我们慢慢找吧。

首先,我们尝试着先过滤几个关键字,比如 comment:

哎哟不错哦,第一个链接看上次嫌疑很大啊,点击右键,新窗口打开:

看来,英语好的人运气都不会太差。
这样我们就非常简单的获取了获得评论的地址:

http://blog.csdn.net/eclipsexys/comment/list/47405045?page=1

从URL可以看出来,只是加了个用户名作区分。

OK,下面我们可以通过:

  1. 通过Python爬取动态加载的网站
  2. 通过Scrapy框架进行爬虫搜索
  3. 尼玛,这就是返回了一个Json啊

还爬什么爬,直接请求这个接口,咱们就拿到这些数据了,所以,前面说的本篇的预备帖,好吧,其实是骗流量的。

实现

实现就非常简单了,尼玛,接口都有了,拿了数据,去除重复评论的、无效的评论、回复的评论,剩下的就是有效数据了。

上Python,让看了预备帖的人不至于扫兴而归:

# coding:utf-8

import requests
import json
import random

class Prize(object):
    def __init__(self):
        print u'开始抽奖啦'

    # 获取网页信息
    def getSource(self, url):
        head = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36'}
        html = requests.get(url, headers=head)
        html.encoding = 'utf-8'
        return html.text

    # 获取所有评论信息
    def getAllCommentInfo(self, source):
        return json.loads(source)['list']

    # 保存到文件
    def saveinfo(self, commentInfo):
        f = open('info.txt', 'w')
        for each in commentInfo:
            print each
            f.writelines('UserName:' + each + '\n')
        f.close()

if __name__ == '__main__':
    # 设定获奖人数
    winnerCount = 1
    userList = []
    url = "http://blog.csdn.net/eclipsexys/comment/list/47405045?page=1"
    androidHeros = Prize()
    html = androidHeros.getSource(url)
    commentsInfo = androidHeros.getAllCommentInfo(html)
    for each in commentsInfo:
        if '[reply]' not in each['Content'] and each['UserName'] not in userList:
            userList.append(each['UserName'])
    androidHeros.saveinfo(userList)

    for i in range(0, winnerCount):
        randomNum = random.randint(0, userList.__len__())
        winner = userList[randomNum]
        print '\n-------------------Winner : ' + winner + ' -------------------'

多说一句

技术,是为了实现实际的目的,这个世界上没有最好的语言,只有最适合的语言,请用最合适的语言去做最合适的事,拒绝做一个语言喷子,从你我他做起。 ——有感于某群中为了争论爬虫为什么不用Java写的人

切记

切记,是在本博客下留言!!!

抽奖结果

即将到来,请大家奔走相告,开始留言吧,评论的人,运气一般都不会太差。

就在刚刚,新鲜出炉的抽奖结果,请让我大声念出来!!!

E:\python\python.exe G:/csdn/csdn.py
开始抽奖啦
jingxia2008
yanyangy_js
u013814553
onlyellow
jiang89125
S938548157
u011775829
kinglearnjava
bc_2014621
u013369232
wenwen091100304
asq1755
dongfeng9ge
solidajun
caigen0001
coder_nice
qq2603825424
a15996088263
u013349626
qmhs815
sbsujjbcy
zhuyaozong
longwanglidfdfdf
u010334329
u010649376
Plcsy2012
F1ReKing
wakewakewake
u014400934
marktheone
oushangfeng123
WX_LYB
csdnwangzhan
hlglinglong
u014626094
nimengbo
forzajuve_android
freestyle_zmy
u013211506
supertian007
www5115zy
onlybone
baidu_27869435
sinat_16653803
freexiaoyu
fewwind
AlbertDenver
u011326653
cxmscb
fmlfch
lingling_a
gao_chun
lianwanfei
lw1075219814
Jasonez
u012403246
yayun0516
sinat_26871969
meng209292
xiaruoli89
u013364442
fanaidehua
jijiaxin1989
xxx823952375
cicf1986
y1scp
xiaozhonghuaa
wanghao200906
u010026245
WXY9206
u011934921
u014495711
Dakaring
darryl0912
wavever
Youzh178
muyuhema
yeyuxp
y505772146
rh1910362960
msdgw
beckett1216
u014061684
chen41345507
u010850027
u012138153
daijianweinihao
u012994271
elsdnwn
aqswde35025
lianlianzhuifeng
a06_kassadin
DaoFeng905147
feijixiaoyu
went0213
github_31318977
m75100313
lijun123456789lijun
fhkatuz674
adhere534
h1252680267
Fulgens
kainkain1988
u012293381
u014679097
ElinaVampire
zhanghongliubob
Kamingnnnnng
cwc455826074
liu470368500

-------------------Count : 110 -------------------

-------------------Winner : AlbertDenver -------------------

-------------------Winner : y1scp -------------------

-------------------Winner : wanghao200906 -------------------

Process finished with exit code 0

总计有110位网友留言,本来留言是有要求的,但是尼玛都太不按常理出牌了,所以就只是过滤了重复的和回复的,如果你没转发微博、没赞,你TMD还抽中了,我只能说——你赢了!!!

结果如下:

中奖的三个人:

wanghao200906: 我感觉会中奖。昨天踩了狗屎

y1scp : 恳请大家尊重原创正版 人人做到自己不触碰不制造盗版、PDF电子版!徐大大,我是来支持你的。

AlbertDenver : 支持医生……http://weibo.com/2104204754/CAN1VliSA

恭喜你们了,特别是那个昨天踩了狗屎的,真的没白踩啊。。。。。

我已经发私信给你们了,要签名版还是购书费,你们说了算,请毫不客气的联系我!!!

时间: 2024-08-29 16:56:32

把抽奖活动写成一篇技术博客是怎样一种体验的相关文章

开发者拒绝写技术博客的常见理由

我很赞成这篇文章,写博客真的可以交到很多的朋友,同时也会扩展很多的知识,尤其是可以纠正自己之前的错误理解.不过写博客也会话费时间,长久来看,利远大于弊.不过还是建议大家写博客的时候注意排版,这样方便自己和他人 开发者拒绝写技术博客的常见理由 常有人跟我讨论我在blog上发布过的博文,有时候他们还希望我来撰写某些文章.在讨论的过程中,我几乎总是会问为什么你自己不开一个博客,或者为其他人的博客做些贡献呢?当我在引导他们为技术类的主题写一些博文时,极少有人对此感兴趣. 我的母亲总是告诉我(以及她的学生

【调研】大家写技术博客的初衷是什么

问题描述 [调研]大家写技术博客的初衷是什么 最近在孵化一个新的项目,借此想了解一下大家写技术博客的初衷有哪些? 我个人能想到的可能就是以下几个方面: 工作中解决了一个具体的问题,然后写一篇博客记录下来: 社区里面看到一些有意思的问题,觉得值得深入研究和分析,然后写一篇博客: 突然有一个比较好的想法,想和大家分享一下,会写一篇博客: 不知大家平时写技术博客的初衷是不是上面提到的三点?或是还有其他的一些方面的原因,期待您的回复,您的回复将是我们持续进步的源动力. 解决方案 记录下一个问题的解决办法

公司是否应该支持员工写技术博客?

最近看到不少文章都建议程序员写技术博客,可是这事儿有时候不是程序员一个人做得了主的,公司是否支持也是个问题,因为技术博客的内容会牵涉到公司的利益. 只说软件技术,我想到有三点: 1.担心泄密.最容易写的技术博客内容自然是当前工作的总结,那么就有泄密的可能.最直接的泄密,是公开了一个软件产品的源码.当然,能当程序员的人都不笨,不会做这样的事情.然而有很多隐性泄密是较难意识到的,这也正是公司最担心的.一些边缘型知识,可以算泄密也可以不算.例如: 最新的成果.也许实现难度很低,但未必能简单地找到方法,

30岁,第一次写技术博客的中原哥

没想到,我也在技术博客里浪了一把.虽然我还是菜鸟.我能不能成为世界上独一无二的技术黑马.就看大家的了

【B/S学习总结】我的第100篇CSDN博客

    在学习B/S之前,写过一篇博客<走过C/S,走进B/S>.从那时开始,就认识到了B/S的与众不同.现在,B/S项目结束了,学习了很长时间,是应该整理整理B/S项目下的知识了.例如:它的工作原理,它的页面布局......那一个个绚丽的网页,都是如何实现的?     想了很久,不知道该给这篇博客写个什么标题,总觉得标题写成"B/S学习总结"很是单调.不经意间,发现这篇博客正好是自己CSDN上的第100篇博客,那么,就以此作为博客的标题啦~~顿时变得很有味道的感觉啦~~

创建GitHub技术博客全攻略

说明: 首先,你需要注册一个 github 账号,最好取一个有意义的名字,比如姓名全拼,昵称全拼,如果被占用,可以加上有意义的数字.本文中假设用户名为 tiemaocsdn 1. 注册账号:地址: https://github.com/输入账号.邮箱.密码,然后点击注册按钮. 图1 第1步 2. 初始设置注册完成后,选择Free免费账号完成设置. 图2 第2步 2.1 验证邮箱请打开你的邮箱,查看发送给你的确认邮件,你需要验证邮箱后,后面生成的个人主页才会被接受和发布. 3. 创建页面仓库地址:

技术博客那些事儿

写文章是一个短期没有收益,长期收益很大的一件事情,但往往是很多人坚持不下来,特别是写文章的初期,刚写完文章没有人阅读会有一种挫败感,影响了后期写文章的积极性.这篇文章我给大家分享如何提升技术博客的影响力,如何去写技术博客,是否应该建立独立博客,如何去推广自己的文章,建立自己的品牌等. 好多人刚开始写文章最主要的目的有两个:第一,记录自己阶段性的学习成果:第二,打开一个让自己和大千世界交流的窗口.不管是以什么样的目的开始的,只要坚持写下去,就会源源不断的感受到写文章带来的好处: 加深自己对技术的理

markdown js:使用Strapdown.js和markdown写极简静态博客

有些新手认为使用markdown建站有个缺陷是需要服务器支持,如jeklly或higridcms等,其实higrid认为并不是这样的.对只有静态空间的朋友,higrid介绍一个静态渲染markdown的利器,就是Strapdown.js.使用Strapdown.js是markdown to html的javascript,并且带有界面效果,不需要你写CSS样式,只要在html页面里面写markdown,他就會把你寫的文字解析然后在浏览器呈现出用户体验良好的布局.使用Strapdown.js和ma

朱琳网站推广技术博客:分享最实用的网站推广方法

中介交易 SEO诊断 淘宝客 云主机 技术大厅 没用的的就不说了,直接进入正题,这些内容也不是我写的,只是我总结和实践过的,希望对大家有所帮助. 第一:最辛苦,也是见效最快的推广办法,论坛推广 首先整理几十个人气最旺的论坛,要是不知怎么找,我告诉你,直接在搜索引擎搜论坛,排在前面的绝对是最火的,还有就是分行业搜索,比如网站推广论坛,肯定是推广论坛中人气最火的.然后注册几个账号,为什么要注册几个呢?留作备用,还有个因素就是有时可以帮顶下帖子.然后就开始发帖.顶贴吧?坚持住就会有很好的效果.还有就是