讯飞AI写作与python及selenium结合,自动化处理的编写笔记,这是我思考和整 ...

打印 上一主题 下一主题

主题 1987|帖子 1987|积分 5961

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
因由:当ai写作刚开始的时间,我头脑发热,费钱买了一年的。结果发现用手工的方式是不可能用完量的。用模拟使用倒是可以,本着钱不能乱花的原则,我开始想,怎样也让python和selenium来完成这项工作。
这个系统和其他的Ai不太一样,一方面他支持问答式,也支持从中心,选中后调出Ai对话框完成问答。
我使用的是第二种方式:比如,我先输入100个问题(段),然后选中每一段,调出Ai对话框,让他答复问题。
实在第一种,我也有测试,但他自动把上下文给联在一起了,超出多少后会出问题。可能是用在其他方面的吧。等以后再看有什么好的用途。

我的目的就是把这120万每月全部用完。不浪费。(注释掉的代码忽略)
  1. import tkinter as tk
  2. from selenium.webdriver.common.action_chains import ActionChains
  3. from selenium import webdriver
  4. from selenium.webdriver.edge.options import Options
  5. import time
  6. from selenium.common.exceptions import TimeoutException
  7. from selenium.webdriver.common.by import By
  8. from selenium.webdriver.support.ui import WebDriverWait
  9. from selenium.webdriver.support import expected_conditions as EC
复制代码
0.创建图形界面

  1. def main():
  2.     window = tk.Tk()
  3.     window.title("xunfei")
  4.     window.geometry("500x300")
  5.     url="https://huixie.iflyrec.com/list"
  6.     # 创建按钮
  7.     button_open = tk.Button(window, text="准备浏览器环境", command=lambda: open_edge_browser(url))
  8.     button_open.pack()
  9.     # 创建按钮
  10.     button_get_answers = tk.Button(window, text="开始工作", command=lambda: autocomplete_tasks())
  11.     button_get_answers.pack()
  12.     window.mainloop()
  13. if __name__ == "__main__":
  14.     main()
复制代码

1.登录(自动)测试通过

打开欣赏器,

  1. def js_condition(driver):
  2.     """自定义等待条件函数,检查JavaScript返回值"""
  3.     return driver.execute_script("return document.readyState") == "complete"
  4. def open_edge_browser(url):
  5.     global driver
  6.     # driver.implicitly_wait(10)  # 设置全局隐式等待时间为10秒
  7.     # 设置Edge选项
  8.     edge_options = Options()
  9.     edge_options.use_chromium = True
  10.     # 向Edge浏览器传递启动参数
  11.     edge_options.add_argument('--disable-extensions')  # 禁用浏览器扩展
  12.     edge_options.add_argument('--disable-gpu')  # 禁用GPU硬件加速
  13.     driver = webdriver.Edge(options=edge_options)
  14.     driver.implicitly_wait(40)  # 设置全局隐式等待时间为40秒
  15.     driver.maximize_window()
  16.     try:
  17.         driver.get(url)
  18.         WebDriverWait(driver, 20).until(js_condition)
  19.         print("网页已加载完成。")
  20.         return driver
  21.     except TimeoutException:
  22.         print("加载超时,请检查网络连接或网页是否正常。")
复制代码
输入帐号密码等

  1. def is_login(driver):
  2.     # 点击登录按钮
  3.     locator = (By.CSS_SELECTOR, 'div.btn-login-register')
  4.     try:
  5.         # 等待直到元素出现,并且是可点击的
  6.         button = WebDriverWait(driver, 30).until(
  7.             EC.element_to_be_clickable(locator)
  8.         )
  9.         # 点击元素
  10.         button.click()
  11.     except TimeoutException:
  12.         print("在指定的时间内登录没有出现")
  13.     # 定位帐号
  14.     locator = (By.CSS_SELECTOR, 'input[placeholder="手机号"]')
  15.     try:
  16.         # 等待直到元素出现,并且是可编辑的
  17.         input_element = WebDriverWait(driver, 10).until(
  18.             EC.element_to_be_clickable(locator)
  19.         )
  20.         # 清除输入框内容
  21.         input_element.clear()
  22.         # 向输入框发送键值
  23.         input_element.send_keys("188888888")
  24.     except TimeoutException:
  25.         print("在指定的时间内用户名没有出现或不可编辑")
  26.     # 定位密码输入框
  27.     locator = (By.CSS_SELECTOR, 'input[placeholder="密码"]')
  28.     try:
  29.         # 等待直到元素出现,并且是可编辑的
  30.         input_element = WebDriverWait(driver, 10).until(
  31.             EC.element_to_be_clickable(locator)
  32.         )
  33.         # 清除输入框内容
  34.         input_element.clear()
  35.         # 向输入框发送键值
  36.         input_element.send_keys("11111111111")
  37.     except TimeoutException:
  38.         print("在指定的时间内用户名没有出现或不可编辑")
  39.         
  40.     #定位登录按钮
  41.     locator = (By.CSS_SELECTOR, 'div.login-btn')
  42.     # 使用WebDriverWait等待元素出现
  43.     try:
  44.         # 等待直到元素出现,并且是可点击的
  45.         button = WebDriverWait(driver, 10).until(
  46.             EC.element_to_be_clickable(locator)
  47.         )
  48.         # 点击元素
  49.         button.click()
  50.     except TimeoutException:
  51.         print("在指定的时间内登录没有出现")
  52.         
  53.     print("登录成功")
  54. def autocomplete_tasks():
  55.     is_login(driver)
复制代码

  
2.进入工作界面

手动部分:

我输入的100个问题,打印让他帮我自动答复的。你随意。
注意:工作的页面我设定的所有标签页中的最后一个。

获取最后一个 标签页

参考代码:
  1. from selenium import webdriver
  2. from selenium.webdriver.common.by import By
  3. from selenium.webdriver.chrome.service import Service
  4. from selenium.webdriver.chrome.options import Options
  5. from selenium.webdriver.support.ui import WebDriverWait
  6. from selenium.webdriver.support import expected_conditions as EC
  7. # 初始化Chrome浏览器
  8. chrome_options = Options()
  9. service = Service(executable_path='path/to/chromedriver')  # 替换为你的chromedriver路径
  10. driver = webdriver.Chrome(service=service, options=chrome_options)
  11. try:
  12.     # 打开一个网页,以便之后有多个标签页进行演示
  13.     driver.get("https://www.example.com")
  14.    
  15.     # 假设在此之后通过某些操作打开了新的标签页,例如点击链接等
  16.    
  17.     # 获取所有窗口句柄
  18.     window_handles = driver.window_handles
  19.    
  20.     # 遍历窗口句柄,定位到最后一个打开的标签页
  21.     for handle in window_handles:
  22.         driver.switch_to.window(handle)  # 切换到当前循环的窗口
  23.         
  24.     # 此时已经位于最后一个标签页,可以执行相应操作
  25.     print("当前页面的URL是:", driver.c
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

麻花痒

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表