我用Python采集了班花的空间数据集,除了美照竟然再一次发现了她另外的秘密!

大家好,我是辣条。

室友知道了我上次给班花修过电脑,追了我三条街,嘴里大骂我不当人子,怪我这种事情没带他。最后又舔着脸求我支招,这货竟然想追班花!辣条我为了兄弟两(收)肋(钱)插(办)刀(事),毫不犹豫的答应了。但是我只有班花的QQ和微信怎么办呢,那就从她平时发的动态着手,于是就有了这篇文章,不过最后我又发现了她的另一秘密!

采集数据目标

网址:QQ空间

工具使用

开发环境:win10、python3.7 开发工具:pycharm、Chrome 工具包:selenium,re,time

重点内容学习

  • selenium使用 -gtk的加密方式 -数据信息的获取

前言

selenium为测试工具需要先配置安装驱动 博主用的是chorme浏览器,下载chormedrive 驱动下载地址驱动下载地址 下载完成之后将驱动exe放到Python安装目录

项目思路解析

控制selenium登录QQ空间

  1.    driver = webdriver.Chrome()  # 这个是chormedriver的地址
  2.    driver.get('https://qzone.qq.com/')
  3.    driver.switch_to.frame('login_frame')
  4.    driver.find_element_by_id('switcher_plogin').click()
  5.    driver.find_element_by_id('u').clear()
  6.    driver.find_element_by_id('u').send_keys('QQ号')  
  7.    driver.find_element_by_id('p').clear()
  8.    driver.find_element_by_id('p').send_keys(“QQ密码”)  
  9.    driver.find_element_by_id('login_button').click()
  10.    time.sleep(2)

获取到好友QQ昵称以及QQ名称

g_tk为加密参数找到加密方法

g_tk值为cookie值进行加密获取p_skey的值进行加密

通过selenium提取到当前网页的cookie值

Python解密代码

  1. def getGTK(cookie):
  2.    hashes = 5381
  3.    for letter in cookie['p_skey']:
  4.        hashes += (hashes << 5) + ord(letter)
  5.    return hashes & 0x7fffffff
  6. cookie = {}  # 初始化cookie字典
  7. for elem in driver.get_cookies():  # 取cookies
  8.    cookie[elem['name']] = elem['value']
  9. gtk = tool.getGTK(cookie)  # 通过getGTK函数计算gtk

获取到好友的QQ号的方法有很多,只有能提取到就行 获取好友说说信息的链接

获取到链接的数据信息

简易源码展示

  1. import json
  2. import re
  3. from selenium import webdriver
  4. import time
  5. def getGTK(cookie):
  6. hashes = 5381
  7. for letter in cookie['p_skey']:
  8. hashes += (hashes << 5) + ord(letter)
  9. return hashes & 0x7fffffff
  10. # 封装函数的关键字
  11. def start_spider():
  12. driver = webdriver.Chrome()
  13. driver.get('https://i.qq.com/')
  14. driver.switch_to.frame('login_frame')
  15. # time.sleep(10)
  16. driver.find_element_by_id('bottom_qlogin').click()
  17. # time.sleep(5)
  18. driver.find_element_by_name('u').clear()
  19. driver.find_element_by_name('u').send_keys('qq号')
  20. # time.sleep(5)
  21. driver.find_element_by_name('p').clear()
  22. driver.find_element_by_name('p').send_keys('qq密码')
  23. driver.find_element_by_id('login_button').click()
  24. time.sleep(2)
  25. cookie = {}
  26. for i in driver.get_cookies():
  27. cookie[i['name']] = i['value']
  28. gtk = getGTK(cookie)
  29. driver.get('https://user.qzone.qq.com/proxy/domain/r.qzone.qq.com/cgi-bin/tfriend/friend_hat_get.cgi?hat_seed=1&uin=1727948159fupdate=2&g_tk=' + str(
  30. gtk) + '&qzonetoken=e794139a284d6ea9e0b26826e541b55df37d0667a3544f534de25aebdb64628d3ab75e1d7104bbb22a' + '&g_tk=' + str(
  31. gtk))
  32. time.sleep(4)
  33. friend_list = driver.page_source
  34. # print(friend_list)
  35. abtract_pattern = ''''(.*?)':{
  36. 'realname':'(.*?)'}'''
  37. qq_name_list = re.findall(abtract_pattern, str(friend_list)) # 数组
  38. print(qq_name_list)
  39. for qq_info in qq_name_list:
  40. qq_num = qq_info[0]
  41. qq_name = qq_info[1]
  42. if qq_num == '对方QQ号': # 我只获取了一个
  43. count = 0
  44. begin = 0
  45. driver.get('https://user.qzone.qq.com/proxy/domain/taotao.qq.com/cgi-bin/emotion_cgi_msglist_v6?uin=' + qq_num + '&ftype=0&sort=0&pos=' + str(
  46. begin) + '&num=40&replynum=200&g_tk=' + str(
  47. gtk) + '&callback=_preloadCallback&code_version=1&format=jsonp&need_private_comment=1&qzonetoken=e794139a284d6ea9e0b26826e541b55df37d0667a3544f534de25aebdb64628d3ab75e1d7104bbb22a&g_tk=' + str(
  48. gtk))
  49. msg_json = driver.page_source
  50. # print(msg_json)
  51. msg_json_list = re.findall('_preloadCallback\((.*?)\);', str(msg_json))
  52. print(msg_json_list)
  53. data = json.loads(msg_json_list[0])
  54. # print(data)
  55. for text in data['msglist']:
  56. content = text['content']
  57. createTime = text['createTime']
  58. f = open('shuoshuo.text', 'a', encoding='utf-8')
  59. f.write('{},{},{},{}\n\n'.format(qq_num, qq_name, createTime, content))
  60. start_spider()

效果图展示

结尾

我成功的把班花空间的数据爬取下来了,主要还是说说的内容,通过她的说说我竟然发现了她喜欢王俊凯,而且还是铁粉的那种,这下我室友是没戏了,哎可怜的娃儿...

PS:纯属技术交流学习,抓取的都是公开数据,没有进行非法牟利获取,最后室友转给我的钱请他吃饭喝酒去了【谁都有过这时候】,最后提醒大家,不要利用爬虫进行违规违法操作,一定要遵纪守法!

(0)

相关推荐