目录

一、前言

二、Selenium反反爬操作

2.1、隐藏“正在受到自动软件的控制”

2.2、禁用 Blink 渲染引擎

2.3、Cookies 和 UA伪装

2.4、控制已打开的浏览器

三、自动化操作

3.1、问题遍历

3.2、获取回答

四、源码


一、前言

近日, ChatGPT在圈内大火。那么什么是ChatGPT呢?

ChatGPT是一种自然语言生成模型,由OpenAI开发。它基于GPT(Generative Pre-training Transformer)的技术架构,旨在更好地模拟人类的自然语言表达方式。

与GPT相比,ChatGPT具有更强的上下文感知能力,可以在继续对话的基础上生成文本。它的应用包括聊天机器人、对话系统、智能邮件助手等。

ChatGPT通过对大量的自然语言文本进行预训练,然后使用这些预训练权重来解决具体的任务。这种基于预训练的方法可以在计算资源有限的情况下获得很好的效果。

值得注意的是,ChatGPT仅是一种技术,并不能独立于特定的应用场景或者产品中使用。开发人员需要根据自己的需求设计应用程序,并使用ChatGPT来实现自然语言生成功能。


二、Selenium反反爬操作

2.1、隐藏“正在受到自动软件的控制”

当我们在使用webdriver时,浏览器上方总会出现 “正在受到自动软件控制” 字样

from selenium import webdriver
from selenium.webdriver.chrome.options import Optionsoptions = Options()
# 隐藏 正在受到自动软件的控制 这几个字
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)

2.2、禁用 Blink 渲染引擎

"--disable-blink-features" 是一个命令行标志,可以传递给 Chrome 浏览器以禁用 Blink 渲染引擎的某些功能。Blink 渲染引擎被 Chrome 和其他基于 Chromium 的浏览器用来显示网页内容。

"--disable-blink-features" 标志接受一个由逗号分隔的要禁用的功能列表。可以使用此标志禁用的一些功能示例包括:

"AutomationControlled":禁用仅在 Chrome 由自动化控制时启用的功能(例如,在无头模式下运行或在 Selenium 控制下运行)。
"PreciseMemoryInfo":禁用准确测量内存使用情况的能力。
"PreciseTimeInfo":禁用准确测量时间的能力。

opt = webdriver.ChromeOptions()
# opt.add_argument("--incognito")
# opt.add_experimental_option('excludeSwitches', ['enable-automation'])
# opt.add_experimental_option('useAutomationExtension', False)
opt.add_argument("--disable-blink-features")
opt.add_argument("--disable-blink-features=AutomationControlled")

2.3、Cookies 和 UA伪装

这个很简单,爬虫基本都会用到两者,通过添加Cookies可以让你的程序省去登陆步骤

cookies = {'domain': ".chat.openai.com",'name': '__Secure-next-auth.session-token','value': 'xxx','expires': 'Sat, 23-Dec-23 04:23:54 GMT','path': '/','HttpOnly': True,# 'HostOnly': True,'Secure': True,'SameSite': None
}
driver.get('https://chat.openai.com/chat')
driver.add_cookie(cookie_dict=cookies)

2.4、控制已打开的浏览器

当使用一个新的web驱动器时会遇到很多问题,不如直接去控制一个已经打开的浏览器,就不用去设置那么多繁琐的参数。

首先,在你的谷歌输入如下网址

chrome://version/

找到可执行文件路径,就是你的驱动器安装地址,在CMD中输入

"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222

此时,你的谷歌就会打开一个新的窗口,下面在程序中输入

from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.chrome.options import Optionsoptions = Options()
options.add_experimental_option("debuggerAddress", "localhost:9222")driver = webdriver.Chrome(executable_path=r"C:\Users\THUNDEROBOT\PycharmProjects\douban\Mr.Ding\chromedriver.exe", chrome_options=options)

这样你就可以直接控制一个已打开的浏览器了。


三、自动化操作

3.1、问题遍历

观察网页结构,不难发现,类似于大多数网站输入,通过Key实现。这时我们可以想到用Selenium来实现

由此可以得到核心代码

question = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/textarea').send_keys('hello')

进入对话框,同样观察网页结构,进行Xpath定位,可以得到如下的核心代码。其中,我们可以把要遍历的问题通过csv存储。

question_from_csv = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/textarea').send_keys(df['问题'][i]

3.2、获取回答

当输入问题后,GPT就会进行回答,那如何判断是否回答完成并且可以进行下一个问题的提问呢

观察右下角,当GPT在回答问题时,右下角是省略号,表示在进行回答;在回答完毕时,右下角是发送箭头,如下所示

可以通过检测是否存在该发送箭头来判断是否回答完毕

有如下核心代码

if driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/button') == True:

当然,有时回答问题时间过长,我们可能只获取了一部分消息,那如何去获取完整的信息呢

睡眠嘛

回答一个问题大概时间是在一分钟多一点,我们可以让程序睡眠2个60s,来判断是否输出完成

四、源码

欢迎评论区技术交流哦~

# -*- coding = utf-8 -*-# "C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222
import time
import pandas as pd
import time
import os
from docx import Document
from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.chrome.options import Optionsoptions = Options()options.add_experimental_option("debuggerAddress", "localhost:9222")driver = webdriver.Chrome(executable_path=r"C:\Users\THUNDEROBOT\PycharmProjects\douban\Mr.Ding\chromedriver.exe", chrome_options=options)
# driver.implicitly_wait(10)
print("hello")
driver.get('https://chat.openai.com/chat')df = pd.read_csv('./问题合集.csv')
print(df['问题'][0])
print('等个5s')
print('Waiting........')
time.sleep(5)
question = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/textarea').send_keys('hello')
botton = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/button').click()
print('再等个5s, 还没出来')
print('Waiting........')
time.sleep(5)
if driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/button') == True:answer = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[1]/div/div/div/div[2]/div/div[2]/div[1]/div/div/p').textprint(answer)
else:print('第三个15s')print('Waiting........')time.sleep(15)answer = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[1]/div/div/div/div[2]/div/div[2]/div[1]/div/div/p').textprint(answer)print('Waiting........')
for i in range(0, 20):# 提问save_path = os.path.join(r"C:\Users\THUNDEROBOT\Desktop\百度文库", df['问题'][i] + ".docx")# 创建一个新的文档document = Document()question_from_csv = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/textarea').send_keys(df['问题'][i] + ' (详细描述并用中文回答,不要让我说继续,一口气说完)')# time.sleep(5)# 点击发送botton_new = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/button').click()# 主页面回答问题time.sleep(50)if driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/button') == True:answer_1 = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[1]/div/div/div/div[{}]/div'.format(4+i*2)).textprint(answer_1)document.add_paragraph(answer_1)document.save(save_path)print('在第一个30s内完成')print('Waiting........')else:time.sleep(60)answer_1 = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[1]/div/div/div/div[{}]/div'.format(4+i*2)).textprint(answer_1)document.add_paragraph(answer_1)document.save(save_path)print('在第二个30s内完成')print('Next question')

ChatGPT自动化相关推荐

  1. 超5k+stars,给大家推荐两个ChatGPT自动化论文阅读网站和插件,从此搞科研再也不用愁!...

    点击上方"Python与机器智能",选择"星标"公众号 第一时间获取价值内容 ChatPaper 项目地址: https://github.com/kaixin ...

  2. ChatGPT自动化提高工作效率: 2分钟快速生成思维导图

    一.简要说明 ChatGPT不止是一个聊天机器人,更是一个自然语言处理.文本内容生成模型,它可以理解语言规则,不仅仅是给你输出已有的知识内容,还会给到你一些创意点子:所以我们应该学会如何使用它,让它更 ...

  3. ChatGPT 自动化办公系列教程 - 提问篇:协助制作 PPT

    除了Word 和 Excel 外,PPT 也是职场打工人的必备技能. 以往很多职位都会花费大量的时间来制作 PPT ,他们会在文案,设计,甚至动画上花费大量的心思. 但结果往往还是做不出来美观的 PP ...

  4. 【使用ChatGPT自动化】批量转换.csv文件为.xlsx文件

    第1次提问: 我:我想使用Python批量转换.csv文件为.xlsx文件,请你提供代码 它:好的,以下是使用Python批量转换.csv文件为.xlsx文件的代码: import os import ...

  5. Python ChatGPT自动化批量改写文章 基于GPT-3.5-turbo模型

    一.实现原理: 1.导入Python所需要的模块 前提:需要先安装openai模块 cmd窗口安装命令:pip install openai 2.Python读取我们要改写的文档 3.将要改写的文章交 ...

  6. ChatGPT可能从这12个方面彻底改变我们的工作和生活

    最近,全球互联网圈最热的产品无疑是OpenAI推出的ChatGPT. 2022年11月30日,ChatGPT正式推出上线: 2022月12月4日(上线5天),用户数突破百万: 2023年1月末(上线2 ...

  7. ChatGPT办公自动化实战

    ChatGPT从入门到精通,一站式掌握办公自动化/爬虫/数据分析和可视化图表制作 全面AI时代就在转角 道路已经铺好了 "局外人"or"先行者" 就在此刻 等你 ...

  8. 【哪些工作会被ChatGPT取代?】我用ChatGPT全自动化生成代码进行了深度分析

    [哪些工作会被ChatGPT取代?]我用ChatGPT全自动化生成代码进行了深度分析 前言 配置好ChatGPT的几个小时之后,我发现了一个宝藏网页https://github.com/f/aweso ...

  9. 【哈士奇赠书活动 - 25期】-〖Python自动化办公应用大全(ChatGPT版) 〗

    文章目录 ⭐️ 赠书 - <Python自动化办公应用大全(ChatGPT版)> ⭐️ 内容简介 ⭐️ 作者简介 ⭐️ 编辑推荐 ⭐️ 赠书活动 → 获奖名单 ⭐️ 赠书 - <Py ...

最新文章

  1. MySQL:一个死锁分析 (未分析出来的死锁)
  2. 彻底关闭windows server 2008 IPv6
  3. 应用更新iOS 开发:应用内实现 更新提醒
  4. 初学Netty(杰哥好久不见)
  5. springMVC_数据的处理过程
  6. BOOT INI专辑
  7. Exynos4412开发板更换开机logo图片
  8. GitHub中文项目排行榜
  9. 寒霜PBR阅读与实践[1]:Material材质--Physically Based Rendering 3.0 --SIGGRAPH 2014
  10. DCMM讲的数据“需求管理”,是什么?管理目标?如何实现?
  11. Django邮件应用--QQ邮箱、网易邮箱(二)
  12. 02-leveldb入门
  13. word 全部更新域
  14. android电视自动关机,android实现自动关机的具体方法代码
  15. D435i:control_transfer returned error, index: 768, error: No data available, number: 61
  16. SQL Server 2008 (2008 R2) 清理日志方法
  17. iwr6843-ROS构建
  18. 这次!38K,妥妥的
  19. Java的抽象类和接口机制应用 你get了没
  20. SOA部署:反常道而行之

热门文章

  1. linux github下载文件,如何直接下载 Github 上的某个文件
  2. Magento时代的全球开源网店系统格局(一)
  3. 全网首发19日苹果发布会
  4. win7声卡驱动不能安装和系统激活完美解决方案
  5. web前端-前端三剑客之JavaScript
  6. unity 利用NavMeshAgent2D实现怪物追人
  7. 程序员用学位证吗_没有学位如何成为一名优秀的Java程序员
  8. 大三下对过去一年多的回顾
  9. 语义网简介(非应用)
  10. 如何安装Apache服务器