抓取QQ空间公开信息需要模拟浏览器行为,而且需要登录QQ账号获取Cookie,因此比较复杂。以下是一个简单的示例代码,仅供参考:
```python
import requests
from bs4 import BeautifulSoup
# 登录QQ账号获取Cookie
session = requests.session()
login_url = 'https://xui.ptlogin2.qq.com/cgi-bin/xlogin'
params = {
'appid': '715030901',
'daid': '73',
'pt_no_auth': '1',
's_url': 'https://qzs.qq.com/qzone/v5/loginsucc.html?para=izone',
'pt_no_verifycode': '1',
'ptlang': '2052',
'u1': 'https://qzs.qq.com/qzone/',
'pt_randsalt': '0',
'pt_vcode_v1': '0',
'pt_verifysession_v1': '',
}
data = {
'u': '你的QQ号码',
'p': '你的QQ密码',
'verifycode': '',
'pt_randsalt': '0',
'pt_vcode_v1': '0',
'pt_verifysession_v1': '',
'u1': 'https://qzs.qq.com/qzone/',
'ptredirect': '0',
'h': '1',
't': '1',
'g': '1',
'from_ui': '1',
'ptlang': '2052',
'action': '2-0-1524631886794',
'js_ver': '10243',
'js_type': '1',
'login_sig': '',
'pt_uistyle': '40',
'aid': '715030901',
'daid': '73',
'pt_qzone_sig': '1',
'pt_3rd_aid': '0',
}
headers = {
'Referer': 'https://xui.ptlogin2.qq.com/cgi-bin/xlogin?appid=715030901&daid=73&pt_no_auth=1&s_url=https://qzs.qq.com/qzone/v5/loginsucc.html?para=izone&pt_no_verifycode=1&ptlang=2052&u1=https://qzs.qq.com/qzone/&pt_randsalt=0&pt_vcode_v1=0&pt_verifysession_v1=',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
}
response = session.get(login_url, params=params, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
data['login_sig'] = soup.select('#login_sig')[0]['value']
response = session.post(login_url, params=params, data=data, headers=headers)
# 抓取QQ空间公开信息
qq_number = '123456789' # 要抓取的QQ号码
url = f'https://user.qzone.qq.com/{qq_number}'
headers = {
'Referer': url,
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
'Cookie': '; '.join([f'{k}={v}' for k, v in response.cookies.items()]),
}
response = session.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
print(soup.select('#feed_friend_list'))
```
需要注意的是,以上代码仅供学习和参考,不保证一定能成功抓取QQ空间公开信息。此外,抓取他人信息可能涉及个人隐私,建议谨慎使用。