Python爬虫实战01 ---- 百度贴吧一键签到

刚学了发送post请求,于是想试一下能不能帮自己一键进行贴吧签到

  • 主要使用到的知识点:
    1. 正则表达式
    2. json数据 的 loads
    3. 发送post请求
  • 先贴代码:
import urllib.request
import re
import json
import time

# import ssl
# ssl._create_default_https_context = ssl._create_unverified_context    #关闭验证

headers = {
	# 找到属于自己的再粘贴进来
    "Cookie": "Your_Cookie",
    "User-Agent": "Your_User-Agent"
}
tieba_url = "http://tieba.baidu.com/sign/add"
# 获取贴吧列表
form_url = "http://tieba.baidu.com/home/main?un=弑神王time"
page_data = urllib.request.urlopen(urllib.request.Request(url="https://tieba.baidu.com/index.html", headers=headers)).read().decode()
form_list = re.findall('"forum_id":(.*?),"forum_name":"(.*?)"', page_data)
for forum in form_list:
    # 获取名字
    kw = forum[1].encode('latin-1').decode("unicode_escape")
    # 获取贴吧站址
    forum_url = "http://tieba.baidu.com/f?kw=" + urllib.parse.quote(kw)  # 网页中有中文需要转换一下
    page = urllib.request.urlopen(urllib.request.Request(url=forum_url, headers=headers)).read().decode('utf-8')
    # 获取post请求中tbs数据
    tbs_data = re.findall('\'tbs\': "(.*?)"', page)[0]
    # 填入数据集合
    form_data = {
        'ie': 'utf-8',
        'kw': kw,
        'tbs': tbs_data,
    }
    data = urllib.parse.urlencode(form_data).encode("utf-8")
    # 发送post请求模拟签到
    post_req = urllib.request.Request(url=tieba_url, data=data, headers=headers)
    # 输出签到成果
    try:
        status = json.loads(urllib.request.urlopen(post_req).read().decode("utf-8"))["data"]["errmsg"]
    except:
        status = "failed"
    print(kw, status)
    time.sleep(1)
print("签到完毕")

如果是自己要运行的话,需要先获取自己登录百度贴吧的Cookie
如果速度过快,网站会要求输入验证码,因此会用到sleep函数控制速度

  • 获取Cookie
    打开百度贴吧,登录,进入个人主页
    按F12进入控制台,再去到Network页面
    滚轮滑到最上面,点击进入该文件
    滚轮往下滑找到Request Headers
    复制Cookie和User-Agent内的内容到代码headers中即可
    在这里插入图片描述
发布了27 篇原创文章 · 获赞 12 · 访问量 5195

猜你喜欢

转载自blog.csdn.net/Kobe_k/article/details/100005964