前言
博主也是刚开始学习Python爬虫不久,打算通过博客来记录自己的学习历程,作为一名纯签到党,打开贴吧的时候总是觉得贴吧升级好慢,所以兴致勃勃的打算通过selenium来自动水贴。
注意!
博主在前几天发表博客后又用这个水了几天,然后现在被贴吧封禁了,故该博客仅供大家参考,如果要实现请慎重!
基本思路
通过selenium模拟浏览器的行为进行贴吧的登陆、进入指定贴吧、打开帖子、输入水贴信息并发送。
整体代码
import json
import os
import time
import re
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
class ShuiTie():
def __init__(self,username,userpwd,bar):
self.wd = webdriver.Chrome() # 打开Chrome浏览器
# 以无头模式打开浏览器
'''
opt = Options()
opt.add_argument('--headless')
opt.add_argument('--disable-gpu')
self.wd = webdriver.Chrome(options=opt)
'''
self.wd.set_window_size(1280, 800) # 设置宽度和高度
self.wd.implicitly_wait(5) # 设置隐式等待为5秒
self.url = 'https://tieba.baidu.com'
self.wd.get(self.url)
self.username = username
self.userpwd = userpwd
self.bar = bar
self.Login() # 登陆百度贴吧
self.pos_url = [] # 存储获取到的帖子的链接
self.Select_Bar() # 选择进入的贴吧
self.Get_Url() # 获取当前首页所有帖子的链接
self.Send_Msg() # 在每个帖子中回复消息
def Login(self):
if(os.path.exists('Cookies_tieba.json')==True): # 若存储Cookie的文件是否存在
self.Add_cookies()
self.wd.refresh()
# 获取当前的网页内容,通过find方法查找用户名,判断用户是否登录成功
content = self.wd.page_source
if (content.find(self.username) == -1): # 用户登录失败,判断Cookie过期,删除文件
os.remove('Cookies_tieba.json')
print('Cookie已过期,请手动登录一次获取Cookie')
return False
else:
print('登录成功!')
else: # 若存储Cookie的文件不存在
# 点击登录按钮
self.wd.find_elements_by_xpath('//*[@id="com_userbar&