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

简介: 把抽奖活动写成一篇技术博客是怎样一种体验本次活动预备知识贴:天罗地网——Python爬虫初初初探http://blog.csdn.net/eclipsexys/article/details/48193541请一定先了解下,不然就真的是为了抽奖了!抽抽抽抽抽抽奖我的新书《Android群英传》上市不久,为了回报各位的大力推荐,也希望更多的人能多多支持,特准备此次抽奖活动。

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

本次活动预备知识贴:天罗地网——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

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

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

目录
相关文章
我写了一个自动化脚本涨粉,从0阅读到接近100粉丝(二)
我写了一个自动化脚本涨粉,从0阅读到接近100粉丝
109 0
|
7月前
|
人工智能
一定要知道如何用ChatGPT编写标题, 快速提升公众号的爆款概率
一定要知道如何用ChatGPT编写标题, 快速提升公众号的爆款概率
|
算法 安全
图文创作者的新机会,微信公众号有了新的增长入口
图文创作者的新机会,微信公众号有了新的增长入口
86 0
|
数据采集 Web App开发 JavaScript
我写了一个自动化脚本涨粉,从0阅读到接近100粉丝(一)
我写了一个自动化脚本涨粉,从0阅读到接近100粉丝
131 0
|
小程序
如何做一个微信答题小程序(三)
嗨!大家好,我是小蚂蚁。今天我们来分享一下如何实现答题功能,包含单选题和多选题的答题,以及如何记录玩家的答题数据。 单选题答题处理 对于单选题来讲,每个选项之间是互斥的,也就是说用户只能从 ABCD 的四个选项中选择一个,不可能同时选择多个。所以在处理单选题答题时,当用户选择了 A 然后又切换到 B 时,此时“选项B”应该是被选中状态,而“选项A”应该是未被选中状态。
292 0
|
存储 Java 双11
整点发放优惠券怎么做?必须用到这个谷歌Map神器
11月的双十一,12月的双十二,打折不断,优惠不停。电商系统中发放优惠券,是一个比较常见的功能。今天讲一个优惠券开发实战。
整点发放优惠券怎么做?必须用到这个谷歌Map神器
|
小程序
如何做一个微信答题小程序(四)
嗨!大家好,我是小蚂蚁。这一节里,我们继续分享如何在答完题后进行答案的比对,以及如何实现一个回顾功能。 在上一节里我们提到过,为了记录玩家的答题数据,我们创建了一个新的表格——玩家答题选项表,里面记录的是玩家回答的题目编号,以及对应的答案。当所有的题目都回答完毕,玩家选择提交后,其实我们要做的,就是逐个的将“玩家答题选项表”中的数据与题库中的答案数据进行比对,来检查题目是答对还是答错。 因为题目中包含着单选题和多选题,所以针对不同的题型,需要做不同的判断处理。
169 0
|
小程序 容器
如何做一个微信答题小程序(二)
嗨!大家好,我是小蚂蚁。在上一节里,我们了解了如何设计答题小程序中的题库——表格,并且知道了如何从题库中随机抽取指定数量的不重复的题目编号。这一节,我们将分享一下如何利用这些题目编号,获取到指定的题目信息,然后将题目呈现出来。 在上一节中我们将随机抽取到的不重复的题目编号记录在了一个“随机选题列表”中。接下来,我们将从列表中挨个取出题目编号,然后显示出当前的题目。
137 0
|
小程序
如何做一个微信答题小程序(一)
今天我们就从题库表格的设计开始,分享一下如何设计一个答题小程序的表格,以及如何从题库中随机的抽取指定数量的题目。 单选题库表格设计 对于一个答题小程序来讲,最合适当作题库的数据形式当然要属表格了。表格适合用于数据的组织和管理,对于单选题库来讲,我们使用如下的数据表格。
370 0
|
小程序 开发者
微信公众号在线答题小程序系统怎么做答题游戏活动
微信公众号在线答题小程序系统怎么做答题游戏活动
下一篇
DataWorks