QQ_spider

github传送门

QQ空间spider总结

花了将近3天吧,完成了低配版qq空间的爬虫,终于能上线刚一波了,还是蛮期待的。 流程很简单,模拟登录 ==>采集==>保存csv==>分析。qq空间的爬取还是很有代表性的,先来说说自己所遇到的一些困难吧:

模拟登陆中:

1.cookie,selenium的chrome,相较于phantomjs有一个好处,可以解决验证码的问题。 2.内嵌frame,这边要注意的点就是selenium的frame操作,因为不经常使用。

采集过程中:

1.说说、日志、好友等接口的获取,这就要引出爬虫界的利器,抓包。说说、日志等接口url的命名还是有点与众不同的,当时我也是找了好一会,才在万军丛中找出了他们。给大家具体感受一下:说说url:https://user.qzone.qq.com/proxy/domain/r.qzone.qq.com/cgi-bin/tfriend/friend_hat_get.cgi?hat_seed=1&uin=【登陆的QQ】&fupdate=1&g_tk=【g_tk值】&qzonetoken=【一串】&g_tk=【g_tk值】。

2.gtk算法,qzonetoken值。gtk的值是qq空间防爬的第一道墙,由百度易得:得到skey后,循环取单字符的二进制并取左值.累加之后就得到后面的g_tk值了。如果说你要自己去寻找,那就需要有一定的js基础了。

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

  

qzonetoken就相当于django中的csrf_token,防止跨站请求伪造,只能通过即时获取。

目标:因为本身写这个程序目的是用来大规模的找出潜在客户,这里就不具体展示了,但是亲测大规模的爬取还是蛮稳定的。这里就仅仅向大家展示我根据一个朋友的说说、评论的结果分析。 

qq空间爬取的更多相关文章

  1. Python_小林的爬取QQ空间相册图片链接程序

    前言 昨天看见某人的空间有上传了XXXX个头像,然后我就想着下载回来[所以本质上这是一个头像下载程序],但是一个个另存为太浪费时间了,上网搜索有没有现成的工具,居然要注册码,还卖45一套.你们的良心也 ...

  2. 使用Python+Selenium模拟登录QQ空间

    使用Python+Selenium模拟登录QQ空间爬QQ空间之类的页面时大多需要进行登录,研究QQ登录规则的话,得分析大量Javascript的加密解密,这绝对能掉好几斤头发.而现在有了seleniu ...

  3. 用python爬取QQ空间

    好久没写博文了,最近捣鼓了一下python,好像有点上瘾了,感觉python比js厉害好多,但是接触不久,只看了<[大家网]Python基础教程(第2版)[www.TopSage.com]> ...

  4. selenium爬取qq空间,requests爬取雪球网数据

    一.爬取qq空间好友动态数据 # 爬取qq空间好友状态信息(说说,好友名称),并屏蔽广告 from selenium import webdriver from time import sleep f ...

  5. python+selenium+requests爬取qq空间相册时遇到的问题及解决思路

    最近研究了下用python爬取qq空间相册的问题,遇到的问题及解决思路如下: 1.qq空间相册的访问需要qq登录并且需是好友,requests模块模拟qq登录略显麻烦,所以采用selenium的dri ...

  6. Python爬取qq空间说说

    #coding:utf-8 #!/usr/bin/python3 from selenium import webdriver import time import re import importl ...

  7. Python爬虫实战:使用Selenium抓取QQ空间好友说说

    前面我们接触到的,都是使用requests+BeautifulSoup组合对静态网页进行请求和数据解析,若是JS生成的内容,也介绍了通过寻找API借口来获取数据. 但是有的时候,网页数据由JS生成,A ...

  8. Python爬虫开源项目代码,爬取微信、淘宝、豆瓣、知乎、新浪微博、QQ、去哪网等 代码整理

    作者:SFLYQ 今天为大家整理了32个Python爬虫项目.整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心.所有链接指向GitHub,祝大家玩的愉快 1.WechatSogou [ ...

  9. 爬虫学习06用selenium爬取空间

    用selenium爬取空间 from selenium import webdriver from lxml import etree import time pro = webdriver.Chro ...

随机推荐

  1. [Oracle][Standby][PDB]在PDB中修改参数,设置范围为 SPFILE,报 ORA-65099错误

    [Oracle][Standby][PDB]在PDB中修改参数,设置范围为 SPFILE,报 ORA-65099错误 在Data Gaurd 的 Standby (或 CDB 是 Read Only ...

  2. 线程中join()的用法

    Thread中,join()方法的作用是调用线程等待该线程完成后,才能继续用下运行. public static void main(String[] args) throws Interrupted ...

  3. mybatis-高级结果映射之一对一

    mybatis的高级结果映射可以很轻松的帮助我们处理一对一, 一对多的数据关系. 1 数据准备 1.1 数据库 创建以下的名为 mybatis 的数据库, 并在其下创建4个表. 在此就不贴出来建表的 ...

  4. item 12: 把重写函数声明为“override”的

    本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 C++中的面向对象编程总是围绕着类,继承,以及虚函数.这个世界中, ...

  5. vue自定义公共组件components||在vue中,解决修改后的数据不能渲染到dom上的bug

    //主页面框架用来嵌入:Main.vue <el-col :span="24" > * { margin: 0; padding: 0; } html { width: ...

  6. 快速排序 O(nlogn)

    #include<bits/stdc++.h> using namespace std; int a[200],n; void q_sort(int l,int r){ if(l>r ...

  7. linux内核分析第六周学习笔记

    LINUX内核分析第六周学习总结 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.c ...

  8. 第三个spring冲刺第10天

    进入最后阶段冲刺最后一天了,基本的需求已经完成了,最后的布局问题也解决了,我们的软件正式推出了.

  9. 使用Java+Kotlin双语言的LeetCode刷题之路(一)

    LeetCode learning records based on Java,Kotlin,Python...Github 地址 序号对应 LeetCode 中题目序号 1 两数之和 给定一个整数数 ...

  10. PAT 1026 程序运行时间

    https://pintia.cn/problem-sets/994805260223102976/problems/994805295203598336 要获得一个C语言程序的运行时间,常用的方法是 ...