把抽奖活动写成一篇技术博客是怎样一种体验
把抽奖活动写成一篇技术博客是怎样一种体验
本次活动预备知识贴:天罗地网——Python爬虫初初初探
http://blog.****.net/eclipsexys/article/details/48193541
请一定先了解下,不然就真的是为了抽奖了!
抽抽抽抽抽抽奖
我的新书《Android群英传》上市不久,为了回报各位的大力推荐,也希望更多的人能多多支持,特准备此次抽奖活动。
抽奖对象
只要在本博客中留言,即可参与抽奖活动。
留言内容如下:
- 已购买《Android群英传》的朋友,请在微博中发帖并@Tomcat的猫 (http://weibo.com/1904977584),并在本博客中贴出你的微博地址
- 或者直接贴出购买链接的地址,并告知我你的用户名
- 如果你还未购买,那就帮忙转发微博(宣传本书即可,最好配图哈),获得15个以上赞(我肯定会帮你赞的哈~~),并在本博客中贴出你的微博地址
- 以前在微博、微信中已经宣传过的,只要在评论中@我一下,并在本博客中留言——“已宣传”,并写上你的微信号,就OK了
PS 请不要重复评论,虽然可以增加我的人气,但对抽奖概率,不会有丝毫影响哦。
PS 请不要欺骗医生真挚纯洁真诚善良的心!
PS 如果你不要我的书也不要我的补贴,但是你却中奖了,那请你直接来上海,浦软大厦703,我!请!你!吃!食!堂!。
奖品!!!
- 未购买《Android群英传》的,奖品为签名版《Android群英传》一本(如果觉得我的字太丑,我也支持画押)
- 已购买《Android群英传》的,奖品为报销你的买书钱
写书不易,一本书我只赚4块钱,请大家本着社会主义的核心价值观,请不要欺骗我真挚的感情~~~~
奖品数量
(comments / 40) + 1
截止时间
抽奖时间,暂定于2015年9月25日中秋前夕。希望给大家带来一份不错的中秋礼物。
下面是技术帖下面是技术帖下面是技术帖下面是技术帖
如何实现抽奖
抽奖的方式很简单,统计所有的有限留言,获取他们的用户名,通过随机数来确定中奖的人的用户名。
作为一个技术宅,我当然不想自己去统计,能自动化的就不要用女朋友,能写脚本的就不用女朋友。所以,本博客的实际目的在于教大家如何正确的去使用女朋友,哦,不对,是正确的使用脚本。
分析
首先我们来看****博客的评论系统。
哎呀我真不是故意截这么多赞美的,请无视。
我们打开Chrome的审核元素:
用放大镜找到用户名:
然后点击右键去找源代码,可是,我们突然发现,不对呀,源代码中根本就没有这些评论信息啊。
哦,这样应该也对,评论的加载,应该是用ajax的吧,不然我们每次评论后,肯定会刷新整个页面咯。
OK,那么我们就来到Network标签,刷新页面,获取数据:
显示评论所调用的js,就在这些文件当中,我们慢慢找吧。
首先,我们尝试着先过滤几个关键字,比如 comment:
哎哟不错哦,第一个链接看上次嫌疑很大啊,点击右键,新窗口打开:
看来,英语好的人运气都不会太差。
这样我们就非常简单的获取了获得评论的地址:
http://blog.****.net/eclipsexys/comment/list/47405045?page=1
从URL可以看出来,只是加了个用户名作区分。
OK,下面我们可以通过:
- 通过Python爬取动态加载的网站
- 通过Scrapy框架进行爬虫搜索
- 尼玛,这就是返回了一个Json啊
还爬什么爬,直接请求这个接口,咱们就拿到这些数据了,所以,前面说的本篇的预备帖,好吧,其实是骗流量的。
实现
实现就非常简单了,尼玛,接口都有了,拿了数据,去除重复评论的、无效的评论、回复的评论,剩下的就是有效数据了。
上Python,让看了预备帖的人不至于扫兴而归:
# coding:utf-8import requestsimport jsonimport randomclass 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.****.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 + ' -------------------'
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
多说一句
技术,是为了实现实际的目的,这个世界上没有最好的语言,只有最适合的语言,请用最合适的语言去做最合适的事,拒绝做一个语言喷子,从你我他做起。 ——有感于某群中为了争论爬虫为什么不用Java写的人
切记
切记,是在本博客下留言!!!
抽奖结果
即将到来,请大家奔走相告,开始留言吧,评论的人,运气一般都不会太差。
就在刚刚,新鲜出炉的抽奖结果,请让我大声念出来!!!
E:\python\python.exe G:/****/****.py开始抽奖啦jingxia2008yanyangy_jsu013814553onlyellowjiang89125S938548157u011775829kinglearnjavabc_2014621u013369232wenwen091100304asq1755dongfeng9gesolidajuncaigen0001coder_niceqq2603825424a15996088263u013349626qmhs815sbsujjbcyzhuyaozonglongwanglidfdfdfu010334329u010649376Plcsy2012F1ReKingwakewakewakeu014400934marktheoneoushangfeng123WX_LYB****wangzhanhlglinglongu014626094nimengboforzajuve_androidfreestyle_zmyu013211506supertian007www5115zyonlybonebaidu_27869435sinat_16653803freexiaoyufewwindAlbertDenveru011326653cxmscbfmlfchlingling_agao_chunlianwanfeilw1075219814Jasonezu012403246yayun0516sinat_26871969meng209292xiaruoli89u013364442fanaidehuajijiaxin1989xxx823952375cicf1986y1scpxiaozhonghuaawanghao200906u010026245WXY9206u011934921u014495711Dakaringdarryl0912waveverYouzh178muyuhemayeyuxpy505772146rh1910362960msdgwbeckett1216u014061684chen41345507u010850027u012138153daijianweinihaou012994271elsdnwnaqswde35025lianlianzhuifenga06_kassadinDaoFeng905147feijixiaoyuwent0213github_31318977m75100313lijun123456789lijunfhkatuz674adhere534h1252680267Fulgenskainkain1988u012293381u014679097ElinaVampirezhanghongliubobKamingnnnnngcwc455826074liu470368500-------------------Count : 110 --------------------------------------Winner : AlbertDenver --------------------------------------Winner : y1scp --------------------------------------Winner : wanghao200906 -------------------Process finished with exit code 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
总计有110位网友留言,本来留言是有要求的,但是尼玛都太不按常理出牌了,所以就只是过滤了重复的和回复的,如果你没转发微博、没赞,你TMD还抽中了,我只能说——你赢了!!!
结果如下:
中奖的三个人:
wanghao200906: 我感觉会中奖。昨天踩了狗屎
y1scp : 恳请大家尊重原创正版 人人做到自己不触碰不制造盗版、PDF电子版!徐大大,我是来支持你的。
AlbertDenver : 支持医生……http://weibo.com/2104204754/CAN1VliSA
恭喜你们了,特别是那个昨天踩了狗屎的,真的没白踩啊。。。。。
我已经发私信给你们了,要签名版还是购书费,你们说了算,请毫不客气的联系我!!!
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.****.net/jiangjunshow
把抽奖活动写成一篇技术博客是怎样一种体验
本次活动预备知识贴:天罗地网——Python爬虫初初初探
http://blog.****.net/eclipsexys/article/details/48193541
请一定先了解下,不然就真的是为了抽奖了!
抽抽抽抽抽抽奖
我的新书《Android群英传》上市不久,为了回报各位的大力推荐,也希望更多的人能多多支持,特准备此次抽奖活动。
抽奖对象
只要在本博客中留言,即可参与抽奖活动。
留言内容如下:
- 已购买《Android群英传》的朋友,请在微博中发帖并@Tomcat的猫 (http://weibo.com/1904977584),并在本博客中贴出你的微博地址
- 或者直接贴出购买链接的地址,并告知我你的用户名
- 如果你还未购买,那就帮忙转发微博(宣传本书即可,最好配图哈),获得15个以上赞(我肯定会帮你赞的哈~~),并在本博客中贴出你的微博地址
- 以前在微博、微信中已经宣传过的,只要在评论中@我一下,并在本博客中留言——“已宣传”,并写上你的微信号,就OK了
PS 请不要重复评论,虽然可以增加我的人气,但对抽奖概率,不会有丝毫影响哦。
PS 请不要欺骗医生真挚纯洁真诚善良的心!
PS 如果你不要我的书也不要我的补贴,但是你却中奖了,那请你直接来上海,浦软大厦703,我!请!你!吃!食!堂!。
奖品!!!
- 未购买《Android群英传》的,奖品为签名版《Android群英传》一本(如果觉得我的字太丑,我也支持画押)
- 已购买《Android群英传》的,奖品为报销你的买书钱
写书不易,一本书我只赚4块钱,请大家本着社会主义的核心价值观,请不要欺骗我真挚的感情~~~~
奖品数量
(comments / 40) + 1
截止时间
抽奖时间,暂定于2015年9月25日中秋前夕。希望给大家带来一份不错的中秋礼物。
下面是技术帖下面是技术帖下面是技术帖下面是技术帖
如何实现抽奖
抽奖的方式很简单,统计所有的有限留言,获取他们的用户名,通过随机数来确定中奖的人的用户名。
作为一个技术宅,我当然不想自己去统计,能自动化的就不要用女朋友,能写脚本的就不用女朋友。所以,本博客的实际目的在于教大家如何正确的去使用女朋友,哦,不对,是正确的使用脚本。
分析
首先我们来看****博客的评论系统。
哎呀我真不是故意截这么多赞美的,请无视。
我们打开Chrome的审核元素:
用放大镜找到用户名:
然后点击右键去找源代码,可是,我们突然发现,不对呀,源代码中根本就没有这些评论信息啊。
哦,这样应该也对,评论的加载,应该是用ajax的吧,不然我们每次评论后,肯定会刷新整个页面咯。
OK,那么我们就来到Network标签,刷新页面,获取数据:
显示评论所调用的js,就在这些文件当中,我们慢慢找吧。
首先,我们尝试着先过滤几个关键字,比如 comment:
哎哟不错哦,第一个链接看上次嫌疑很大啊,点击右键,新窗口打开:
看来,英语好的人运气都不会太差。
这样我们就非常简单的获取了获得评论的地址:
http://blog.****.net/eclipsexys/comment/list/47405045?page=1
从URL可以看出来,只是加了个用户名作区分。
OK,下面我们可以通过:
- 通过Python爬取动态加载的网站
- 通过Scrapy框架进行爬虫搜索
- 尼玛,这就是返回了一个Json啊
还爬什么爬,直接请求这个接口,咱们就拿到这些数据了,所以,前面说的本篇的预备帖,好吧,其实是骗流量的。
实现
实现就非常简单了,尼玛,接口都有了,拿了数据,去除重复评论的、无效的评论、回复的评论,剩下的就是有效数据了。
上Python,让看了预备帖的人不至于扫兴而归:
# coding:utf-8import requestsimport jsonimport randomclass 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.****.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 + ' -------------------'
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
多说一句
技术,是为了实现实际的目的,这个世界上没有最好的语言,只有最适合的语言,请用最合适的语言去做最合适的事,拒绝做一个语言喷子,从你我他做起。 ——有感于某群中为了争论爬虫为什么不用Java写的人
切记
切记,是在本博客下留言!!!
抽奖结果
即将到来,请大家奔走相告,开始留言吧,评论的人,运气一般都不会太差。
就在刚刚,新鲜出炉的抽奖结果,请让我大声念出来!!!
E:\python\python.exe G:/****/****.py开始抽奖啦jingxia2008yanyangy_jsu013814553onlyellowjiang89125S938548157u011775829kinglearnjavabc_2014621u013369232wenwen091100304asq1755dongfeng9gesolidajuncaigen0001coder_niceqq2603825424a15996088263u013349626qmhs815sbsujjbcyzhuyaozonglongwanglidfdfdfu010334329u010649376Plcsy2012F1ReKingwakewakewakeu014400934marktheoneoushangfeng123WX_LYB****wangzhanhlglinglongu014626094nimengboforzajuve_androidfreestyle_zmyu013211506supertian007www5115zyonlybonebaidu_27869435sinat_16653803freexiaoyufewwindAlbertDenveru011326653cxmscbfmlfchlingling_agao_chunlianwanfeilw1075219814Jasonezu012403246yayun0516sinat_26871969meng209292xiaruoli89u013364442fanaidehuajijiaxin1989xxx823952375cicf1986y1scpxiaozhonghuaawanghao200906u010026245WXY9206u011934921u014495711Dakaringdarryl0912waveverYouzh178muyuhemayeyuxpy505772146rh1910362960msdgwbeckett1216u014061684chen41345507u010850027u012138153daijianweinihaou012994271elsdnwnaqswde35025lianlianzhuifenga06_kassadinDaoFeng905147feijixiaoyuwent0213github_31318977m75100313lijun123456789lijunfhkatuz674adhere534h1252680267Fulgenskainkain1988u012293381u014679097ElinaVampirezhanghongliubobKamingnnnnngcwc455826074liu470368500-------------------Count : 110 --------------------------------------Winner : AlbertDenver --------------------------------------Winner : y1scp --------------------------------------Winner : wanghao200906 -------------------Process finished with exit code 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
总计有110位网友留言,本来留言是有要求的,但是尼玛都太不按常理出牌了,所以就只是过滤了重复的和回复的,如果你没转发微博、没赞,你TMD还抽中了,我只能说——你赢了!!!
结果如下:
中奖的三个人:
wanghao200906: 我感觉会中奖。昨天踩了狗屎
y1scp : 恳请大家尊重原创正版 人人做到自己不触碰不制造盗版、PDF电子版!徐大大,我是来支持你的。
AlbertDenver : 支持医生……http://weibo.com/2104204754/CAN1VliSA
恭喜你们了,特别是那个昨天踩了狗屎的,真的没白踩啊。。。。。
我已经发私信给你们了,要签名版还是购书费,你们说了算,请毫不客气的联系我!!!