python半自动化获取QQ空间说说

获取QQ空间说说

因使用的使用了from selenium import webdriver ,半自动化谷歌驱动,至于配置另行百度。以及还需要requests模块。

操作步骤:
运行代码,自动打开谷歌浏览器,随后,自动填入QQ与密码,
然后需要手动点击登入和滑块滑动,然后就不用管它了,滑块自动验证部分,本人能力有限,没尝试过。

代码中只需要修改6,7,8行配置即可运行。

import time
from selenium import webdriver
import re
import requests

QQ='xxxxxxx' #这里填写QQ号
pwd='xxxxxxxxx'  #这里填写QQ密码
friendlist = [xxxxxxx,xxxxxx] #这是要访问空间的QQ号,是数组的形式

def get_g_tk(cookie):
    hashes = 5381
    for letter in cookie['p_skey']:
        hashes += (hashes << 5) + ord(letter)
    return hashes & 0x7fffffff


def login():
    browser = webdriver.Chrome()
    browser.get('https://i.qq.com/')
    browser.maximize_window()
    time.sleep(6)
    browser.switch_to.frame("login_frame")
    browser.find_element_by_id('switcher_plogin').click()
    browser.find_element_by_id('u').clear()
    browser.find_element_by_id("u").send_keys(QQ)
    browser.find_element_by_id('p').clear()
    browser.find_element_by_id("p").send_keys(pwd)
    time.sleep(15)
    print("登陆成功")
    return browser

def back_session(browser):
    my_session = requests.session()
    cooikes = browser.get_cookies()
    cookie = {}
    for elem in cooikes:
        cookie[elem['name']] = elem['value']
    headers = {
        'host': 'h5.qzone.qq.com',
        'accept-encoding': 'gzip, deflate, br',
        'accept-language': 'zh-CN,zh;q=0.9',
        'accept': '*/*',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36'
    }
    c = requests.utils.cookiejar_from_dict(
        cookie, cookiejar=None, overwrite=True)
    my_session.headers = headers
    my_session.cookies.update(c)
    return my_session


def get_message(my_session, qq, g_tk, qzonetoken):
    url = 'https://h5.qzone.qq.com/proxy/domain/taotao.qq.com/cgi-bin/emotion_cgi_msglist_v6?uin=' + str(
        qq) + '&inCharset=utf-8&outCharset=utf-8&hostUin=' + str(
        qq) + '&notice=0&sort=0&pos=0&num=20&cgi_host=http://taotao.qq.com/cgi-bin/emotion_cgi_msglist_v6&code_version=1&format=jsonp&need_private_comment=1&g_tk=' + str(
        g_tk) + '&qzonetoken=' + str(qzonetoken)
    res = my_session.get(url)
    # 说说总数
    num = re.compile('"total":(.*?),').findall(res.text)[0]
    content_list = re.compile(
        '"certified".*?"conlist":(.*?),', re.S).findall(res.text)
    if int(num) % 20 == 0:
        page = int(num) / 20
    else:
        page = int(num) / 20 + 1

    for i in range(0, int(page)):
        pos = i * 20
        url = 'https://h5.qzone.qq.com/proxy/domain/taotao.qq.com/cgi-bin/emotion_cgi_msglist_v6?uin=' + str(
            qq) + '&inCharset=utf-8&outCharset=utf-8&hostUin=' + str(qq) + '&notice=0&sort=0&pos=' + str(
            pos) + '&num=20&cgi_host=http://taotao.qq.com/cgi-bin/emotion_cgi_msglist_v6&code_version=1&format=jsonp&need_private_comment=1&g_tk=' + str(
            g_tk) + '&qzonetoken=' + qzonetoken
        res = my_session.get(url)
        content_list = re.compile(
            '"certified".*?"conlist":(.*?),', re.S).findall(res.text)
        time_list = re.compile(
            '"certified".*?"createTime":"(.*?)"', re.S).findall(res.text)
        for c, t in zip(content_list, time_list):
            c = c.replace('[{"con":', '')
            with open("qq_news.txt", 'a', encoding='utf-8') as f:
                f.write(t)
                f.writelines(c)
                f.write('\n')


def main():
    driver = login()
    print(driver)
    html = driver.page_source
    xpat = r'window\.g_qzonetoken = \(function\(\)\{ try\{return (.*?);\} catch\(e\)'
    qzonetoken = re.compile(xpat).findall(html)[0]
    cookies = driver.get_cookies()
    cookie = {}
    for elem in cookies:
        cookie[elem['name']] = elem['value']
    g_tk = str(get_g_tk(cookie))
    my_session = back_session(driver)
    driver.close()

    for i in range(0, len(friendlist)):
        get_message(my_session, friendlist[i], g_tk, qzonetoken)
        time.sleep(8)

if __name__ == '__main__':
    main()

最后可以关注一下我个人微信公众号,不定期更新一些好用的资源以及生活上的点点滴滴~~
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值