v2 抽奖代码

2018-06-07 01:28:43 +08:00
 ml1344677

之前说了要抽两本书的,今天搞完论文的事情,刚去吃了散伙饭回来。草草写了个抽奖脚本,抽帖子 https://www.v2ex.com/t/457319https://www.v2ex.com/t/459938 里的人。写好之后发现可以用楼层数抽就好了....尴尬。贴上渣代码和抽奖结果。不知道如何在 v2 上优雅的放代码哈,随意排版了下。 def get_html(url):

cookies = ''

re = request.Request(url)

re.add_header('cookie', cookies)

re.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) '
                            'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36')
                            
return request.urlopen(re).read().decode('utf-8')

def get_user_by_id(id):

page = etree.HTML(get_html('https://www.v2ex.com/t/' + str(id))) 
message_num = page.xpath('//*[@id="Main"]/div[4]/div[1]/span/text()[1]')[0].split(' ')[0]  # 回复数 确定翻页次数
print('共有', message_num, '条回复')
page = math.ceil(int(message_num) / 100)
print('共有', page, '页')
user_list = []
for i in range(1, page + 1):
    url = 'https://www.v2ex.com/t/' + str(id) + '?p=' + str(i)
    print(url)
    divs = etree.HTML(get_html(url))
    res = divs.xpath('//*[@id="Main"]/div[4]//a[@class="dark"]')
    for info in res:
        user_list.append(info.text)
        print(info.text)
    print(len(user_list))
return user_list

def main():

id_list = [459938, 457319]
user_list = []
for id in id_list:
	user_list.extend(get_user_by_id(id))
print('共有', len(user_list), '个人回复')
print('去重后还有', len(set(user_list)), '个人')
prizer = random.sample(set(user_list), 2)
print(prizer)

共有 322 个人回复 去重后还有 298 个人 ['JohnChiu', 'Keepall']

没有特殊要求我就按顺序给你们发第一第二本了 如果有的话 你们自行商量哈。

vx:cTM5ODU1NjA1Mw==

ps 代码在我机器上运行是没问题的哈[狗头]

1311 次点击
所在节点    程序员
5 条回复
kslr
2018-06-07 06:22:08 +08:00
如果得知总回复数随机抽出数字,是不是节省很多时间了
ml1344677
2018-06-07 22:35:55 +08:00
@kslr 这样不能去重
kslr
2018-06-08 01:19:12 +08:00
@kslr #1 数字去重不也很简单
ml1344677
2018-06-08 23:54:49 +08:00
@kslr 有个人重复回复了 2 次 怎么把他的所在楼层的数字确定出来然后去掉只剩 1 次
kslr
2018-06-09 22:47:38 +08:00
@ml1344677 #4 把 ID 换用户名

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

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

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

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

© 2021 V2EX