用 Python 爬取 QQ 空间说说和相册

本文介绍了如何使用Python的selenium模块爬取QQ空间的说说和相册。首先通过安装selenium并配置chrome驱动进行登录,接着解析说说页面,利用滚动加载获取所有说说。对于相册,模拟鼠标操作进入相册列表,逐个抓取照片。通过这个教程,读者可以重温过去的回忆。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QQ 空间在 2005 年被腾讯开发,已经经历了 15 个年头,在还没有微信的年代,看网友发表的心情、心事、照片大多都在 QQ 空间的里。它承载了80、90 后的大量青春,下面我们一起用 selenium 模块导出说说和相册回忆青春吧

安装 selenium
selenium 是一个在浏览器中运行,以模拟用户操作浏览器的方式获取网页源码,使用 pip 安装 selenium 模块

pip install selenium
查看 chrome 浏览器版本并下载 对应的 chrome 浏览器驱动

在这里插入图片描述

在 http://npm.taobao.org/mirrors/chromedriver 网址中找到相同版本的 chrome 驱动,并放在 python 程序运行的同一个文件夹中

登陆
按 F12 检擦网页源代码,找到登录和密码的文本框,如下图所示
在这里插入图片描述

def login(login_qq,password, business_qq):
‘’’
登陆
:param login_qq: 登陆用的QQ
:param password: 登陆的QQ密码
:param business_qq: 业务QQ
:return: driver
‘’’
driver = webdriver.Chrome()

driver.get('https://user.qzone.qq.com/{}/311'.format(business_qq))  # URL
driver.implicitly_wait(10)  # 隐示等待,
### 爬取QQ空间相册数据的实现方法 使用Python爬取QQ空间相册数据需要解决几个关键问题,包括登录验证、动态页面加载数据解析。以下是一个完整的解决方案。 #### 1. 登录验证 QQ空间通常需要登录才能访问相册内容。由于直接使用`requests`模块模拟登录较为复杂,可以借助`selenium`模块通过浏览器自动化完成登录过程[^4]。 ```python from selenium import webdriver # 初始化浏览器驱动 driver = webdriver.Chrome() # 打开QQ空间登录页面 url = 'https://user.qzone.qq.com/' driver.get(url) # 等待用户手动完成登录 input("请在浏览器中完成登录后按回车继续:") ``` #### 2. 获取Cookies 登录完成后,可以从浏览器中提取Cookies,并将其用于后续的请求操作。 ```python # 获取登录后的Cookies cookies = driver.get_cookies() # 将Cookies转换为字典格式 cookies_dict = {} for cookie in cookies: cookies_dict[cookie['name']] = cookie['value'] ``` #### 3. 动态加载处理 QQ空间相册页面通常是动态加载的,可以通过`selenium`模拟滚动操作来加载更多内容[^5]。 ```python # 模拟滚动加载更多内容 def scroll_to_bottom(driver): last_height = driver.execute_script("return document.body.scrollHeight") while True: driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") new_height = driver.execute_script("return document.body.scrollHeight") if new_height == last_height: break last_height = new_height scroll_to_bottom(driver) ``` #### 4. 数据解析 使用`BeautifulSoup`模块解析页面中的相册链接片信息[^5]。 ```python from bs4 import BeautifulSoup import requests # 使用Requests发送带Cookies的请求 session = requests.Session() for key, value in cookies_dict.items(): session.cookies.set(key, value) # 请求相册页面 album_url = 'https://user.qzone.qq.com/.../album' # 替换为实际相册URL response = session.get(album_url) # 解析HTML内容 soup = BeautifulSoup(response.text, 'html.parser') albums = soup.find_all('a', class_='album-item') # 假设相册链接的HTML结构如此 # 提取相册链接 album_links = [album['href'] for album in albums] # 遍历每个相册,获取片链接 for link in album_links: album_response = session.get(link) album_soup = BeautifulSoup(album_response.text, 'html.parser') images = album_soup.find_all('img', class_='photo-item') # 假设片的HTML结构如此 image_urls = [img['src'] for img in images] print(image_urls) ``` #### 5. 下载片 将提取到的片链接下载到本地[^3]。 ```python import os # 创建保存片的文件夹 if not os.path.exists('photos'): os.makedirs('photos') # 下载片 for i, url in enumerate(image_urls): response = session.get(url) with open(f'photos/image_{i}.jpg', 'wb') as f: f.write(response.content) ``` ### 注意事项 - QQ空间可能存在反虫机制,建议适当降低请求频率。 - 使用`selenium`时需要安装对应版本的浏览器驱动程序[^4]。 - 如果目标QQ空间设置了权限限制(如仅好友可见),则需要确保登录账号为好友关系。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值