今天白天比较忙,测试抽奖代码测试一半,有事情就放一边了
现在是根据那个佬友给的方案,我目前得到都是403。
import requests
import random
def get_candidate_list(topic_id):
headers = {
'Cookie': ""
# 打开https://linux.do/t/topic/166273.json页面,注意修改topic_id,获取这个页面的 cookie 填入
}
candidate_list = []
name_list = set()
url = 'https://linux.do/t/topic/{}.json?page={}'
for i in range(1, 1000):
resp = requests.get(url.format(topic_id, i), headers=headers, timeout=10)
print("查询第{}页".format(i), resp.status_code, 'code')
if resp.status_code == 404:
print("已经到达最后一页")
break
if resp.status_code == 403:
print("【带锁的帖子】没有权限查看请求的资源。我也不会了")
exit()
return None
result = resp.json()
posts = result["post_stream"]["posts"]
topic_owner = posts[0]["username"]
for i in posts:
only_name = i["username"]
if (only_name not in name_list) and (only_name != topic_owner): # 去除楼主和重复username
candidate = {
"only_name": only_name,
"display_name": i["display_username"],
"post_text": i["cooked"],
"post_number": i["post_number"]
}
candidate_list.append(candidate)
name_list.add(i["username"])
return candidate_list
def start(topic_id, winner_number):
candidates = get_candidate_list(topic_id)
url = "https://linux.do/t/topic/" + topic_id
if len(candidates) < winner_number:
print(f'\n主题共 {len(candidates)} 个有效回复参与抽奖(不包含楼主和重复回帖),少于中奖者人数【{winner_number}】,'
f'所有用户中奖\n【{len(candidates)}】位中奖者信息如下:\n')
for x in candidates:
print_user_info(x, url)
return
print(f"\n主题共 {len(candidates)} 个有效回复参与抽奖(不包含楼主和重复回帖):\n【{winner_number}】位中奖者信息如下:\n")
for x in (random.sample(candidates, winner_number)):
print(x, url)
print("\n复制以上内容发帖即可。")
def print_user_info(user, url):
winner_id = user["only_name"]
winner_name = user["display_name"]
winner_text = user["post_text"]
winner_floor = user["post_number"]
print(f"# 恭喜 {winner_name}(@{winner_id}),楼层 [{winner_floor}]({url}/{winner_floor}) \n回帖内容:\n> {winner_text}\n")
if __name__ == "__main__":
topic_id = '166273' # topic_id
winner_number = 300 # 中奖人数
start(topic_id, winner_number)
明天就要抽奖了,白天有事情只能熬夜搞一下,结果……
急啊,嘎嘎急~~~
求解~



