鱼C论坛

 找回密码
 立即注册
查看: 1798|回复: 0

[作品展示] 通过selenium实现贴吧自动顶贴

[复制链接]
发表于 2020-8-6 09:47:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 孟婆汤 于 2020-8-6 09:49 编辑
# coding=utf-8

import requests as rs
import re
from selenium import webdriver
from urllib import parse
import time
from selenium.webdriver.common.keys import Keys


class baidu:
    def __init__(self, name, num):
        self.index_url=''
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KH'\
                          'TML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'
        }
        self.name = name
        self.index_num = num
        self.wd = webdriver.Chrome(executable_path='chromedriver')
        # 设置 浏览器最大化
        self.wd.maximize_window()
        self.wd.implicitly_wait(10)

    def run(self):
        # 合并 各种网址
        self.combine_url()
        # 获取 帖子地址
        self.get_index_url_list()
        # 百度登录
        self.login_baidu()
        # 开始顶贴
        self.up_title()


    def combine_url(self):
            temp_url = 'https://tieba.baidu.com/f?'
            self.index_url = temp_url + parse.urlencode({'kw' : self.name})+'&ie=utf-8&pn=0'
            self.title_basic_href = 'https://tieba.baidu.com/p/'
            self.title_href_list = []

    def get_index_url_list(self):
        for i in range(self.index_num):
            self.index_url = self.index_url[:-1]+f'{i*50}'
            con = rs.get(url=self.index_url,headers=self.headers).content.decode('utf-8')
            href_list = re.findall('回复">.*?</span>[\s\S]*?href="/p/(.*?)"\stitle',con)
            self.title_href_list.append(href_list)

    def login_baidu(self):

        url = 'https://passport.baidu.com/v2/?login'
        self.wd.get(url=url)
        self.wd.find_element_by_id('TANGRAM__PSP_3__footerULoginBtn').click()
        time.sleep(0.1)

        # 输入 账号
        self.wd.find_element_by_id('TANGRAM__PSP_3__userName').send_keys('贴吧账号')
        # 输入 密码
        self.wd.find_element_by_id('TANGRAM__PSP_3__password').send_keys('贴吧密码')
        # 去除 下次登录
        self.wd.find_element_by_id('TANGRAM__PSP_3__memberPass').click()
        time.sleep(0.1)
        # 登录
        self.wd.find_element_by_id('TANGRAM__PSP_3__submit').click()

        while True:
            # 判断 是否跳转,如果为否,则判断是否存在弹出框
            if url == self.wd.current_url:
                time.sleep(0.2)
                try:
                    self.wd.find_element_by_id('TANGRAM__PSP_21__foreground').find_element_by_id('TANGRAM__PSP_27__jump').click()
                    break
                except:
                    time.sleep(0.2)
                    continue
            # 已经跳转,则退出
            else:
                break

    def up_title(self):
        for i in self.title_href_list:
            for j in i:
                self.wd.get(self.title_basic_href+j)
                time.sleep(0.1)
                js = 'scrollTo(0,100000)'
                self.wd.execute_script(js)
                p = self.wd.find_element_by_id('ueditor_replace').find_element_by_xpath('./p')
                p.send_keys('46846464684684')
                p.send_keys(Keys.CONTROL,Keys.ENTER)
                # 最后再加一个 判断 是否顶贴成功即可
                # 下午 再干
                # 拖了一周都没干。。。唉 拖延症

def main():
    bd = baidu('灌水',1)
    bd.run()


if __name__ == '__main__':
    main()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-19 17:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表