百度知道自动答题

用 selenium 自动在百度知道对没有最佳答案的题目进行答题,再也不用担心没有题目不去回答了

from selenium import webdriver 
import time


 
url = 'https://zhidao.baidu.com/list?cid=110'

brower = webdriver.Chrome()
brower.get(url)

brower.delete_all_cookies()

# 手动登录
time.sleep(30)
# brower.refresh()

# 所有的问题列表
title_links = brower.find_elements_by_class_name('title-link')

for i in title_links:
    # 列表页
    brower.switch_to.window(brower.window_handles[0])
    # 问题的链接
    href = i.get_attribute('href')
    brower.execute_script("window.open(\"{}\");".format(href))
    time.sleep(5)
    # 问题页
    brower.switch_to.window(brower.window_handles[1])
    try:
        brower.find_elements_by_id('ueditor_0')
        title = brower.find_element_by_class_name('ask-title').text
        title_url = "https://zhidao.baidu.com/search?word=" + title
        brower.execute_script('window.open("{}");'.format(title_url))
        time.sleep(5)
        # 搜索答案页
        brower.switch_to.window(brower.window_handles[2])
        answer_list = brower.find_elements_by_class_name('dt,mb-4,line')

        for j in answer_list:
            href = j.find_element_by_tag_name('a').get_attribute('href')
            brower.execute_script('window.open("{}");'.format(href))
            # 答案详情页
            brower.switch_to.window(brower.window_handles[3])
            try:
                text = brower.find_element_by_class_name('best-text,mb-10').text
            except:
                text = ''

            finally:
                # 关闭详情页
                brower.close()
            
            if text:
                #  关闭答案列表
                brower.switch_to.window(brower.window_handles[2])
                brower.close()

                # 写答案
                brower.switch_to.window(brower.window_handles[1])
                brower.switch_to.frame('ueditor_0')
                brower.find_element_by_xpath('/html/body').click()
                brower.find_element_by_xpath('/html/body').send_keys(text)
                brower.switch_to.default_content()
                brower.find_element_by_xpath('//*[@id="answer-editor"]/div[2]/a').click()
                time.sleep(5)

                brower.switch_to.window(brower.window_handles[1])
                brower.close()
                break

    except Exception as e:
        all_handles = brower.window_handles
        for i, v in enumerate(all_handles):
            if i != 0:
                brower.switch_to.window(v)
                brower.close()
        brower.switch_to.window(brower.window_handles[0])
        print(e)

之前可以先保存 cookies,然后在添加入

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.by import By
import time
import json

brower = webdriver.Chrome()
brower.get("https://www.baidu.com")


# 登录的按钮
brower.find_element_by_xpath('//*[@id="u1"]/a[7]').click()

# 知道出现登录的界面
conditon_1 = EC.visibility_of_element_located((By.XPATH,'//*[@id="TANGRAM__PSP_10__footerULoginBtn"]'))

WebDriverWait(brower, timeout=2).until(conditon_1)

# 用户名登录的选项
brower.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__footerULoginBtn"]').click()


# 等到直到出现登录界面
account = brower.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__userName"]')

passwd = brower.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__password"]')

# 知道出现了输入密码
conditon_2 = EC.visibility_of_element_located((By.XPATH, '//*[@id="TANGRAM__PSP_10__password'))
# WebDriverWait(brower, timeout=5).until(conditon_2)

# 输入账号密码
account.send_keys("username")
passwd.send_keys("password")


brower.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__submit"]').click()

# 手工登录吧
time.sleep(10)

try:
    brower.find_element_by_xpath('//*[@id="TANGRAM__28__button_send_mobile"]').click()
    code = input("Code: ")
    brower.find_element_by_xpath('//*[@id="TANGRAM__28__input_label_vcode"]').send_keys(str(code))
    brower.find_element_by_xpath('//*[@id="TANGRAM__28__button_submit"]').click()
except Exception as e:
    print(e)
    



all_cookies = brower.get_cookies()
with open("./cookies.txt", 'w') as file:
    file.write(json.dumps(all_cookies))
time.sleep(2)




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值