今天来写一个自动计算微博抽奖男女比例的代码,很早就应该发这篇了,只是不想蹭热点(才不是拖更)。
整个的过程大概分为三步:
S1:从抽奖公示页获取所有中奖者的微博ID
S2:由每个中奖者的微博ID进入其相应主页,获得需要的个人信息(性别、粉丝数、微博数等)
S3:对收集到的信息进行相应的汇总分析
接下来一步一步地进行就好了,没什么难点和需要注意的地方,权当做是一次很小的练手。
其中pageid和id两个变量就可以定位一次抽奖。
中奖名单每页公示3个,当你点下一页的时候会以AJAX方式请求数据。
因此我们只需要请求第一页以后,获取获奖的总人数,然后循环分别获取其余AJAX请求。
image
将每个获奖人的ID放在一个列表里,每次append即可。
在这边有一点就是,我们必须要在登陆状态下访问才可以看到获奖情况,否则会跳转登录页。解决办法是带cookie访问。无脑加headers和cookies不会有问题。
def lottery(page, pageid, lid):
cookies = {# your cookies }
headers = {# copy the headers }
params = (
('pageid', pageid), # 100140E1198435
('id', lid), # 3436763
('page', page), # 2
('prizeLevel&