python爬取qq空间照片
时间: 2023-09-25 09:10:39 浏览: 370
可以使用Python中的第三方库来爬取QQ空间的照片,以下是一个简单的示例代码:
```python
import requests
import os
def download_qzone_photos(qq_number):
# 设置QQ空间相册的URL
album_url = f'https://user.qzone.qq.com/proxy/domain/photo.qzone.qq.com/fcgi-bin/fcg_list_album_v3?'
# 设置请求参数
params = {
'uin': qq_number,
'g_tk': 'xxxxxx', # 替换为你的g_tk值,可以通过登录QQ空间后获取
'format': 'json', 'callback': '_preloadCallback',
't': 'xxxxxxxxx', # 替换为你的t值,可以通过登录QQ空间后获取
'hostUin': qq_number,
'topicId': '',
'pageSize': '100',
'pageNum': '0',
'callback': 'shine0_Callback',
'platform': 'qzone',
'needUserInfo': '1',
'_': 'xxxxxxxxx', # 替换为你的时间戳
}
# 发送GET请求获取QQ空间相册列表
response = requests.get(album_url, params=params)
data = response.text
# 提取相册列表中的相册ID
album_id_list = []
for line in data.splitlines():
if line.strip().startswith('"id"'):
album_id = line.split(':')[1].strip(',"')
album_id_list.append(album_id)
# 遍历相册列表,下载每个相册中的照片
for album_id in album_id_list:
# 设置相册照片列表的URL
photo_list_url = f'https://h5.qzone.qq.com/proxy/domain/photo.qzone.qq.com/fcgi-bin/cgi_list_photo?'
# 设置请求参数
params['topicId'] = album_id
# 发送GET请求获取相册照片列表
response = requests.get(photo_list_url, params=params)
data = response.text
# 提取相册照片列表中的照片URL
photo_url_list = []
for line in data.splitlines():
if line.strip().startswith('"url"'):
photo_url = line.split(':')[1].strip(',"')
photo_url_list.append(photo_url)
# 创建保存照片的文件夹
album_folder = f'QQ空间相册{album_id}'
if not os.path.exists(album_folder):
os.makedirs(album_folder)
# 遍历照片URL列表,下载每张照片
for i, photo_url in enumerate(photo_url_list):
response = requests.get(photo_url)
with open(os.path.join(album_folder, f'photo_{i}.jpg'), 'wb') as f:
f.write(response.content)
print(f'已下载照片:{os.path.join(album_folder, f"photo_{i}.jpg")}')
```
以上代码是通过模拟请求获取QQ空间相册列表和相册照片列表,并将照片下载到本地。请注意,在使用此代码之前,你需要替换其中的参数,如`qq_number`、`g_tk`、`t`和`_`,以及确保你已经登录了QQ空间。
希望这个示例代码对你有帮助!
阅读全文