pythonqq交流群_使用 Python 获取 QQ 群投票数据

在浏览器中直接打开会出现"载入中,请稍后..."的字眼。这是因为没有登陆,没有权限

在这里登陆自己的QQ,再访问就可以了

此时的选项是不可点击的,因为网页检测你的浏览环境不是手机界面,并且是不可触摸的

在Chrome下很好解决,只需进入响应式模式即可,如果是火狐,则需要进入火狐后再次点击"加载触摸事件",就可以点击进入详情页

既然在浏览器端已经可以获取到这些数据,那么应该就可以使用python和selenium来获取数据

自然而然的想到如何让Chrome和Firefox来进入这种模式呢?

单单换UA和窗口尺寸是不行的,因为不会加载触摸事件。

Firefox driver我没有找到这样的操作,好在Chrome可以。主要代码如下:

#!/bin/env python

# -*- coding:utf-8 -*-

fromseleniumimportwebdriver

fromselenium.webdriver.chrome.optionsimportOptions

presets=[

{"key":"1080 x 1920","name":"Nexus 5 Portrait","width":1080,"height":1920},

]

mobile_emulation={

"deviceMetrics":{"width":360,"height":640,"pixelRatio":3.0},

"userAgent":"Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.23 Mobile Safari/537.36"}

chrome_options=Options()

chrome_options.add_experimental_option("mobileEmulation",mobile_emulation)

driver=webdriver.Chrome(chrome_options=chrome_options)

#!/bin/env python

# -*- coding:utf-8 -*-

fromseleniumimportwebdriver

fromselenium.webdriver.chrome.optionsimportOptions

presets=[

{"key":"1080 x 1920","name":"Nexus 5 Portrait","width":1080,"height":1920},

]

mobile_emulation={

"deviceMetrics":{"width":360,"height":640,"pixelRatio":3.0},

"userAgent":"Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.23 Mobile Safari/537.36"}

chrome_options=Options()

chrome_options.add_experimental_option("mobileEmulation",mobile_emulation)

driver=webdriver.Chrome(chrome_options=chrome_options)

这样获得的driver就可以正常浏览投票页面了

还有个值得注意的是当投票人数比较多的情况下,不会一次加载完成的。每当鼠标滚动到最下方,就会加载一些数据。我最开始本打算用selenium进行点击拖动来加载数据,后来查询到可以用js控制右侧的滚动条来实现

这里比较偷懒,尝试拖动三次,其实应该在首页获取投票人数,第一次加载100人,看看QQ的js,找到之后一次加载多少数据后,得到循环的次数...

# 滑动界面获取全部投票

try:

for_inrange(3):

js="var q=document.body.scrollTop=10000"

driver.execute_(js)

time.sleep(2)

except:

pass

# 滑动界面获取全部投票

try:

for_inrange(3):

js="var q=document.body.scrollTop=10000"

driver.execute_(js)

time.sleep(2)

except:

pass

其它的就没什么好说的了,先登录,然后访问投票页面。

完整的代码在这里:python-qqvote

只获取了投票第一项的数据,如果不知道投票选项,需要在投票首页的地方获取投票选项数量,比较懒...就这样吧

QQ投票页面的数据中只有用户昵称,比较可惜,不过可以在QQ群空间获取QQ号和昵称的对应关系。

获取QQ群成员的代码在这里:python-qun-people

参考:

https://sites.google.com/a/chromium.org/chromedriver/mobile-emulation

http://blog.csdn.net/winterto1990/article/details/48215941

https://sites.google.com/a/chromium.org/chromedriver/mobile-emulation

http://blog.csdn.net/winterto1990/article/details/48215941

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值