QQ空间相册爬虫

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Vision_Tung/article/details/82904060

QQ空间相册爬虫

目标:

  1. 不声不响的进入别人空间(直接进入内存消耗巨大,速度慢)
  2. 获取可以获取的所有的照片
  3. 获取.gif格式的照片(未实现)
  4. 获取视频(未实现,但可获取视频封面照片)

空间相册分析:
 

  • 首先,不可操作的相册显然不在我们考虑的范围
  • 对于可操作的相册我将其分为两个部分,是因为我操作‘你有权限进入的相册’时,我遇到了一些难题,与此同时,我也意识到自己的薄弱之处(我极其讨厌模拟请求形式的爬虫技术,话多了。。。。)
  • 由于对于可见相册两种情况难以控制,所以在对图片处理时采用了比较low的方法(截图),并未使用图像下载的方法

流程图:

Json分析:

相册列表Json文件:

照片Json文件:

展开看看:

不好意思,让你看到我恶心的动态了

请求链接分析:

相册列表链接:

相册链接:

注*:

  1. 没用的关键字,意思就是你写什么都行(TX的工程师= =。。。)
  2. 相册链接有两种,我就只用一种了哈~

源码:

#encoding:utf-8
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import re
import json
import importlib,sys
importlib.reload(sys)
import sys
import os

class Preprocessor:
    
    def Analysis_Json(self):
        jsonInfor.AnalysisJson().Analysis_Json()
        
    def startSpider(self):
        driver = webdriver.Chrome(executable_path='chromedriver.exe')
        driver.get('https://qzone.qq.com/')
 
        driver.switch_to.frame('login_frame')
        driver.find_element_by_id('switcher_plogin').click()
        User_QQnum = '******'#这里填写你的QQ号
        User_QQpas = '******'#这里填写你的QQ密码
        driver.find_element_by_id('u').clear()
        driver.find_element_by_id('u').send_keys(User_QQnum)  
        driver.find_element_by_id('p').clear()
        driver.find_element_by_id('p').send_keys(User_QQpas)  
 
        driver.find_element_by_id('login_button').click()
        time.sleep(2)
        pic_num = 0
        #---------------获得g_qzonetoken 和 gtk
      
        '''
            注意!!!!!!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
                            --Vision_Tung
                                2018年10月25日

        '''
 
        gtk=self.getGTK(cookie)#通过getGTK函数计算gtk
        print(g_qzonetoken)
        print(gtk)
        
        targetQQ = '******'#这里填写目标QQ
        
        photo_list = 
        '''
            注意!!!!!!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
                            --Vision_Tung
                                2018年10月25日

        '''
        driver.get(photo_list)
        html = driver.page_source
        f = open(r'photoList'+'.json','w+',encoding='utf-8')

        '''
            注意!!!!!!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
                            --Vision_Tung
                                2018年10月25日

        '''
        f.close()

        f = open('photoList.json', encoding='utf-8')
        text = f.read()
        f.close()
                    
        if text.startswith(u'\ufeff'): 
            
        '''
            注意!!!!!!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
                            --Vision_Tung
                                2018年10月25日

        '''
                    
                photosUrl = 
        '''
            注意!!!!!!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
                            --Vision_Tung
                                2018年10月25日

        '''
                driver.get(photosUrl)
                html = driver.page_source
                
        '''
            注意!!!!!!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
                            --Vision_Tung
                                2018年10月25日

        '''

            
    def getGTK(self,cookie):
       
        '''
            注意!!!!!!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
            此块细节已影藏!!!!
                            --Vision_Tung
                                2018年10月25日

        '''
if __name__ == '__main__':
    processor = Preprocessor()
    processor.startSpider()
    print("OK")

效果:

展开阅读全文

没有更多推荐了,返回首页