爬取QQ空间说说日志、好友个人信息并进行加密

项目背景、目的和意义

随着科学技术的不断发展,互联网进展的不断加快,人工智能、大数据和云计算等新兴技术的不断涌现,目前每天都有上亿的数据在网络中流通。而人工收集数据的发法效率低,成本高。因此,本项目利用Python爬虫等技术,能够在数分钟内,实现自动登录QQ空间,抓取个人信息、好友列表、说说和日志等信息,同时能够及时对抓取的数据进行加密,保证了通信安全。本项目的成功实施,对办公自动化、信息检索、互联网信息安全等方面具有重要意义,同时加以GUI界面进行封装,提高了程序的普适性和交互性。

业务说明

启动程序后,提示用户可供选择的操作:
1.抓取信息:继续提示输入QQ号和密码(密码不能显示出来,用*号代替),然后登录QQ空间,抓取其中的①QQ个人信息;②好友列表;③说说和日志;把获取到的信息经过加密后存入csv文件中。
2.显示信息:用户输入QQ号码后,生成解密的csv文件,用户可查看:①QQ个人信息;②好友列表;③说说和日志;输入Quit或quit可以退出系统。
在这里插入图片描述
在这里插入图片描述

代码实现:

1.GUI_main.py用户界面,用于运行程序

在这里插入图片描述
每一次抓取,都会为当前QQ建立一个文件夹,方便分类收集QQ的QQ空间中信息。

在这里插入图片描述
如果重复抓取,则会提醒用户已经抓取过了,此时可以选择删除该QQ的文件夹重新抓取或者显示信息。
如果想查看未抓取的QQ,则会提醒当前用户还未抓取过信息,此时可以选择输入该QQ的面进行抓取
在这里插入图片描述

具体代码如下:

import tkinter as tk
import tkinter.messagebox as Msg
from directory import mkdir
import os


window = tk.Tk()
window.title('QQ空间,分享生活,留住感动')
window.geometry('450x350')

# 欢迎界面
canvas = tk.Canvas(window, height=500, width=500)
image_file = tk.PhotoImage(file='demo.gif')
image = canvas.create_image(0,0, anchor='nw', image=image_file)
canvas.pack(side='top')

# 用户信息
tk.Label(window, text='Q Q ').place(x=50, y= 200)
tk.Label(window, text='密码 ').place(x=50, y= 230)
tk.Label(window, text='加密/解密秘钥 ').place(x=10, y= 260)

var_usr_name = tk.StringVar()
var_usr_name.set('在这里输入qq号')
entry_usr_name = tk.Entry(window, textvariable=var_usr_name)
entry_usr_name.place(x=100, y=200)

var_usr_pwd = tk.StringVar()
entry_usr_pwd = tk.Entry(window, textvariable=var_usr_pwd, show='*')
entry_usr_pwd.place(x=100, y=230)


var_key = tk.StringVar()
entry_key = tk.Entry(window, textvariable=var_key)
entry_key.place(x=100, y=260)
var_key.set('请输入0-1000整数')

def get_all():
    """完成对内容的抓取和加密的过程"""
    
    username = var_usr_name.get()
    password = var_usr_pwd.get()
    key = var_key.get()
    file = username + "\\" + username + '_encrypted.csv'
    # 为当前用户创建文件夹
    if( not os.path.exists(username) or not os.path.exists(file)):
        # *************************爬取信息的主程序
        mkdir(username)
        import ourmain
        isSuccess = ourmain.main(username, password, key)
        if isSuccess:
            Msg.showinfo(message="信息已经抓取并加密完毕!")
        else:
            Msg.showinfo(message="账号或密码错误")
    else:
        Msg.showwarning(message="当前用户已经抓取过信息了!")
        return 
    
    
    
def show_all():
    """完成对内容的解密过程"""
    username = var_usr_name.get()
    path = username
    key = var_key.get()
   
    if(os.path.exists(path)):
        # ********************显示信息的主程序
        import decrypts1
        file0 = username + "\\" + username + '_encrypted.csv'
        file1 = username + "\\" + username + '_decrypted.csv'
        decrypts1.save_file(file0, file1, key)
        Msg.showinfo(message="信息解密完毕!")

    else:
        Msg.showerror(message="当前用户还未抓取过信息!")
        return 
    pass
    

# 按钮
btn_get = tk.Button(window, text='抓取信息', activeforeground = "black",activebackground = 'blue',command=get_all)
btn_get.place(x=100, y=300)
btn_show = tk.Button(window, text='显示信息', activeforeground = "black",activebackground = 'blue',command=show_all)
btn_show.place(x=200, y=300)
btn_quit= tk.Button(window,text = 'Quit',activeforeground = "black",activebackground = 'blue',command=window.destroy)
btn_quit.place(x=300, y=300)
window.mainloop()

2.ourmain.py 工程主程序

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

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from login import login1 as login
from friends import friends_lis
要使用Python模拟爬取QQ邮箱网站的邮箱信息并打印出来,通常需要借助一些第三方库来处理HTTP请求和HTML解析,例如`requests`和`BeautifulSoup`。但是,需要明确的是,爬取任何网站的内容,尤其是像QQ邮箱这样的受版权保护的服务,都应该遵守相关的法律法规以及网站的使用条款。很多邮箱服务商,包括QQ邮箱,通常有反爬虫机制,并且明文禁止未经授权的数据爬取行为。因此,以下仅作为技术讨论,不应用于实际爬取操作。 以下是一个技术上模拟实现的过程: 1. 使用`requests`库发送网络请求,获取QQ邮箱网站的HTML内容。 2. 利用`BeautifulSoup`库解析HTML内容,寻找包含邮箱信息的HTML元素。 3. 提取这些元素中的文本,并打印出来。 请注意,以下代码仅为示例,实际上QQ邮箱网站有反爬虫机制,真实情况下可能无法获取到数据。 ```python import requests from bs4 import BeautifulSoup # 模拟登录QQ邮箱(实际上需要处理验证码、加密密码等复杂情况) session = requests.Session() login_url = 'https://mail.qq.com/cgi-bin/loginpage/cgi_email_login' # 这里的账号和密码需要替换成实际的登录信息 payload = { 'username': 'your_qq_number', 'password': 'your_password' } # 发送登录请求 response = session.post(login_url, data=payload) # 检查是否登录成功,然后抓取邮箱信息(以下为伪代码) if response.ok: # 假设成功获取到邮箱列表页面的HTML内容 soup = BeautifulSoup(response.text, 'html.parser') # 假设邮箱信息被包含在某个class名为'email-info'的div标签内 email_list = soup.find_all('div', class_='email-info') # 遍历打印每个邮箱信息 for email_info in email_list: # 假设邮箱信息为div标签中的第一个<a>标签的文本内容 email = email_info.find('a').text print(email) else: print('登录失败,请检查账号密码是否正确以及网络情况') ``` 在实际使用时,由于QQ邮箱网站的登录机制中包含验证码、加密密码和动态令牌等安全措施,这将使得登录变得复杂得多。同时,一旦被检测到爬虫行为,账号有可能会被封禁。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值