python 贴吧发帖
时间: 2023-10-23 17:13:35 浏览: 162
以下是使用 Python 发帖到贴吧的基本步骤:
1. 导入必要的库和模块
```python
import requests
from bs4 import BeautifulSoup
```
2. 登录贴吧并获取必要的参数
```python
# 登录页面 URL
login_url = 'https://passport.baidu.com/v2/?login'
# 贴吧 URL
post_url = 'http://tieba.baidu.com/f/commit/post/add'
# 创建一个 session 对象
session = requests.Session()
# 获取登录页面的 HTML
response = session.get(login_url)
soup = BeautifulSoup(response.content, 'html.parser')
# 获取登录所需的 token 和 code
token = soup.find('input', {'name': 'token'})['value']
code_string = soup.find('img', {'class': 'login-captcha-img'})['src']
code = input('请输入验证码:')
```
3. 构造请求头和表单数据
```python
# 构造请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
'Referer': 'https://passport.baidu.com/v2/?login',
}
# 构造表单数据
data = {
'ie': 'utf-8',
'kw': '贴吧名称', # 贴吧名称
'fid': '贴吧 ID', # 贴吧 ID
'tid': '', # 帖子 ID,发新帖时为空
'vcode_md5': '',
'floor_num': 0,
'rich_text': 1,
'tbs': '',
'content': '帖子内容', # 帖子内容
'title': '帖子标题', # 帖子标题
'anonymous': 0,
'tag': '',
'new_vcode': 1,
'geetest_challenge': '',
'geetest_validate': '',
'geetest_seccode': '',
'captcha_id': '',
'captcha': '',
'tid': '',
}
```
4. 登录贴吧并发帖
```python
# 构造登录表单数据
login_data = {
'staticpage': 'https://passport.baidu.com/static/passpc-account/html/v3Jump.html',
'charset': 'UTF-8',
'token': token,
'tpl': 'pp',
'subpro': '',
'apiver': 'v3',
'tt': str(int(time.time()*1000)),
'codestring': code_string,
'safeflg': '0',
'u': 'https://passport.baidu.com/',
'isPhone': '',
'detect': '1',
'gid': '',
'quick_user': '0',
'logintype': 'dialogLogin',
'logLoginType': 'pc_loginDialog',
'idc': '',
'loginmerge': 'true',
'splogin': 'rate',
'username': '用户名',
'password': '密码',
'verifycode': code,
'vcodestr': code_string,
}
# 发送登录请求
session.post(login_url, data=login_data, headers=headers)
# 获取 TBS
tbs_url = f'http://tieba.baidu.com/dc/common/tbs?t={int(time.time()*1000)}'
tbs_response = session.get(tbs_url)
tbs = tbs_response.json()['tbs']
data['tbs'] = tbs
# 发送发帖请求
session.post(post_url, data=data, headers=headers)
```
这样就可以使用 Python 发帖到贴吧了。注意,需要替换代码中的贴吧名称、贴吧 ID、用户名、密码等信息。同时,验证码需要手动输入,可以使用第三方库自动识别。
阅读全文