作者:solideogloria
来源:https://blog.yasking.org/a/python-and-selenium-qqvote.html
抽时间研究下QQ群投票信息的获取,比较适合(高频次/投票人数较多)的投票统计。不知道QQ群有没有API可以获取投票信息,反正找了一圈没发现。那就想想看怎么办
QQ客户端肯定是没办法了...自然而然的想到网页版也有群空间之类的地方,可以下载群文件,查看群相册什么的。去碰碰运气,然而只可以发起投票,不能获取投票的人名称什么的。比较难办,最后翻翻用手机看看,天无绝人之路,在投票页面可以复制投票地址。
类似这样的URL:
http
:
//client.qun.qq.com/qqweb/m/qun/vote/detail.html?_lv=38105&_wv=1031&_bid=2035&src=3&groupuin=151496851&fid=93a8070900000000d38621575e800***
在浏览器中直接打开会出现"载入中,请稍后..."的字眼。这是因为没有登陆,没有权限
在这里登陆自己的QQ,再访问就可以了
此时的选项是不可点击的,因为网页检测你的浏览环境不是手机界面,并且是不可触摸的
在Chrome下很好解决,只需进入响应式模式即可,如果是火狐,则需要进入火狐后再次点击"加载触摸事件",就可以点击进入详情页
既然在浏览器端已经可以获取到这些数据,那么应该就可以使用python和selenium来获取数据
自然而然的想到如何让Chrome和Firefox来进入这种模式呢?
单单换UA和窗口尺寸是不行的,因为不会加载触摸事件。
Firefox driver我没有找到这样的操作,好在Chrome可以。主要代码如下:
#!/bin/env python
# -*- coding:utf-8 -*-
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
presets = [
{"key":"1080 x 1920","name":"Nexus 5 Portrait","width":1080,"height":1920},
]
mobile_emulation = {
"deviceMetrics": { "width": 360,