日期:2025/04/02 05:01来源:未知 人气:53
AI
有时,一个问题,问一遍AI,是不是很浪费时间,但是,如果 自己多个问题,一起问,就可以省很多时候了。这个角度就是从这个角度写的。当然,你可参考这个思路写更适合你的脚本。AI,可以让我们生活更有效率。
准备工作 :
安装Python和必需的库。
准备好关键词文件和写作指令文件。
确保输出目录存在或有权限创建。
运行脚本 :
bash
复制
python yiyan_writer.py
生成文章 :
登录完成后,按回车继续。
脚本会自动处理关键词列表,生成的文章将保存在指定目录下。
3. 输出说明:高效管理,一目了然
“生成的文章将按照关键词命名,保存在 E:\07.python\04-1.保存\
目录下。每个关键词对应一个独立的文本文件,方便你快速查找和管理! ”
文件名格式 :关键词.txt
文件内容 :包含AI生成的高质量文章,可直接使用或进一步修改。
4. 注意事项:稳定运行,避免踩坑
“为了确保脚本稳定运行,以下几点需要注意:”#web#
运行环境 :
确保网络连接稳定。
确保Chrome浏览器已安装,且版本与ChromeDriver匹配。
使用限制 :
需要有文心一言的访问权限。
避免频繁请求,建议设置适当的等待时间。
错误处理 :
脚本包含自动重试机制,出错时会自动截图保存。
支持断点续传,失败后可继续处理剩余关键词。
5. 开发与维护:持续优化,高效运行
“这款脚本基于Selenium WebDriver开发,支持自动处理弹窗和异常情况。为了确保脚本长期稳定运行,建议定期更新和维护: ”
fromseleniumimportwebdriver
fromselenium.webdriver.common.byimportBy
fromselenium.webdriver.common.keysimportKeys
fromselenium.webdriver.support.uiimportWebDriverWait
fromselenium.webdriver.supportimportexpected_conditionsasEC
importtime
importos
classYiyanWriter:
definit(self):
chrome_options = webdriver.ChromeOptions()
.add_argument('--disable-gpu')
.('--no-sandbox')
.('--disable-dev-shm-usage')
.('--disable-extensions')
self.driver = webdriver.Chrome(options=)
self.wait = WebDriverWait(self.driver, 20)
deflogin(self):
try:
self.driver.get("https://yiyan.baidu.com/chat")
print("请在浏览器中完成登陆操作...")
input("登录完成后按回车继续...")
print("正在等待页面加载...")
time.sleep(5) # 等待页面完全加载
exceptExceptionase:
print(f"登录过程出错: {e}")
raise
defread_keywords(self, file_path):
try:
withopen(file_path, 'r', encoding='utf-8') asf:
return [line.strip() forlineinfifline.strip()]
exceptExceptionase:
print(f"读取关键词文件出错: {e}")
raise
defread_prompt(self, file_path):
try:
withopen(file_path, , encoding=) asf:
returnf.read().strip()
exceptExceptionase:
print(f"读取提示词文件出错: {e}")
raise
defgenerate_content(self, keyword, prompt):
try:
print(f"正在处理关键词: {keyword}")
time.sleep(10)
try:
self.driver.find_element(By.CSS_SELECTOR, "div.chat-input-box").click()
time.sleep(2)
except:
print("会话可能已过期,刷新页面...")
self.driver.refresh()
time.sleep(10)
input_box = self.wait.until(
EC.presence_of_element_located((By., "div[contenteditable='true']"))
)
full_prompt = prompt.replace("关键词", keyword)
print("正在输入提示词...")
self.driver.execute_script("arguments[0].innerHTML = ''", input_box)
time.sleep(2)
forcharin:
input_box.send_keys(char)
time.sleep(0.05) # 每个字符之间稍微停顿
time.sleep(3) # 输入完成后等待一下
print("正在发送消息...")
try:
send_button = self.wait.until(
EC.element_to_be_clickable((By., "span#sendBtn"))
)
time.sleep(1)
.click()
print("消息已发送")
time.sleep(5) # 发送后等待一段时间
except:
print("发送失败")
returnNone
print("等待回复中...")
max_wait = 120# 增加等待时间
start_time = time.time()
whiletime.time() - start_time < max_wait:
try:
error_messages = self.driver.find_elements(By., ".ant-message-notice")
if:
print("检测到环境异常,等待后重试...")
time.sleep(15) # 等待较长时间
returnNone
messages = self.driver.(By.CSS_SELECTOR, ".chat-message")
ifmessages:
latest_message = messages[-1].text.strip()
iflatest_messageandlatest_message != full_prompt:
print("收到回复!")
time.sleep(3) # 等待回复完全加载
returnlatest_message
time.sleep(2)
exceptExceptionase:
print(f"检查回复时出错: {e}")
time.sleep(2)
print("等待回复超时")
returnNone
exceptExceptionase:
print(f"生成内容时出错: {e}")
self.driver.savescreenshot(f"error{keyword}.png")
returnNone
defrun(self):
try:
output_dir = r"E:\07.python\04-1.保存"
ifnotos.path.exists(output_dir):
os.makedirs(output_dir)
print(f"创建输出目录: {output_dir}")
self.login()
keywords = self.read_keywords(r"E:\07.python\04.1关键词.txt")
prompt = self.read_prompt(r"E:\07.python\04.2写作指令.txt")
print(f"共读取到 {len(keywords)} 个关键词")
forindex, keywordinenumerate(keywords, 1):
retry_count = 0
max_retries = 3
whileretry_count < max_retries:
try:
print(f"\n处理第 {index}/{len(keywords)} 个关键词: {keyword}")
ifretry_count > 0:
print(f"第 {retry_count + 1} 次重试...")
self.driver.refresh()
time.sleep(5)
content = self.generate_content(keyword, prompt)
ifcontent:
output_file = os.path.join(output_dir, f"{keyword}.txt")
try:
withopen(output_file, 'w', encoding='utf-8') asf:
f.write(content)
print(f"内容已保存到: {output_file}")
break# 成功后跳出重试循环
exceptExceptionase:
print(f"保存文件失败: {e}")
else:
print(f"处理失败,准备重试...")
retry_count += 1
time.sleep(3)
exceptExceptionase:
print(f"处理出错: {e}")
retry_count += 1
time.sleep(3)
ifretry_count >= max_retries:
print(f"处理关键词 {keyword} 失败,已达到最大重试次数")
ifindex < len(keywords):
print("等待10秒后处理下一个关键词...")
time.sleep(10)
print("\n所有关键词处理完成!")
print(f"输出文件保存在: {output_dir}")
exceptKeyboardInterrupt:
print("\n程序被用户中断")
exceptExceptionase:
print(f"运行时出错: {e}")
self.driver.save_screenshot("error_general.png")
finally:
try:
print("正在关闭浏览器...")
self.driver.quit()
except:
pass
ifname == "main":
try:
writer = YiyanWriter()
writer.run()
exceptKeyboardInterrupt:
print("\n程序被用户中断")
exceptExceptionase:
print(f"程序执行出错: {e}")
finally:
print("\n按回车键退出程序...")
try:
input()
except:
pass
定期更新 :
更新ChromeDriver版本。
检查选择器是否需要更新。
性能优化 :
调整等待时间和重试次数。
自定义输出格式,满足个性化需求。
如果你网络环境不太稳定,可能会报错,可自行调试即可,代码只是给大家参考思路。