当前位置: 首页 > news >正文

网站根目录 设置联合易网做网站

网站根目录 设置,联合易网做网站,wordpress主题去哪里找,网站代建设费用吗大背景 虽然我们能用网页版chatGPT来聊天、写文章#xff0c;但是我们采集大量的内容#xff0c;就得不断地手动输入提问来获取答案#xff0c;并且将结果复制到数据库来保存。如果整个过程能使用程序来做自然要节省很多的人力#xff0c;精力和时间。 Python webdirver …大背景 虽然我们能用网页版chatGPT来聊天、写文章但是我们采集大量的内容就得不断地手动输入提问来获取答案并且将结果复制到数据库来保存。如果整个过程能使用程序来做自然要节省很多的人力精力和时间。 Python webdirver 模拟浏览器的方式来实现刚好能实现以上功能。 另外之所以不选择API 是因为以下原因 普通开发者国内获取API KEY 是有困难的需要海外手机号 信用卡等一系列条件但是如果只是网页端我们仅仅需要登录或者未登录的方式就可以直接聊天 网页端无需调整各项参数可以直接交互获取内容而且内容质量更高 当然如果你有条件用API 或者直接通过 wss交互获取内容的到这儿可以直接结束了。 完整源码在文章末尾哦 基本环境要求 准备自己的梯子 ChatGpt属于海外项目国内的小伙伴翻墙得找好自己的梯子代理这里自己有啥用啥即可。 安装Python 环境 Python要求3.10 安装 Python Selenium pip install selenium其他扩展库说明取决于自己电脑缺什么就安装什么。后面完整代码会提供完整的 requirements.txt 浏览器 这里以Chrome浏览器为准。也就是你本地必须要安装Chrome浏览器并且获取其安装路径。 比如C:Program FilesGoogleChromeApplicationchrome.exe 操作系统 这里以 windows 作为开发环境。 开发工具 自己什么顺手用什么。 这里讲个程序界的笑话传说级别的开发者据说用的记事本来开发。 实现过程 这里只介绍主要的代码 浏览器控制 使用程序实现浏览器的控制这包括浏览器的打开关闭以及代理配置。 创建 browser_manage.py import subprocess, datetime import os, signal, psutildef run_cmd(port9200):cmd [# chrome浏览器路径。 必须为首个参数C:/Program Files/Google/Chrome/Application/chrome.exe,# 【必要】设置浏览器端口--remote-debugging-port%s % port,# 【必要】设置浏览器数据存储路径--user-data-dirD:/data,# 隐藏一些弹窗之类的信息--hide-crash-restore-bubble,# 设置浏览器分辨率。如果要跑多个浏览器可以将每个浏览器设置小一些--force-device-scale-factor1,# 假设代理地址为 http://127.0.0.1:10809--proxy-serverhttp://127.0.0.1:10809,# 默认打开一个空白页面about:blank]process subprocess.Popen(cmd)# 返回pid 用于关闭浏览器杀死进程return process.piddef kill_process(parent_pid):try:# 获取父进程parent psutil.Process(parent_pid)# 获取父进程的所有子进程包括孙子进程等children parent.children(recursiveTrue)# 创建一个包含父进程PID的列表pids_to_kill [parent_pid]# 将所有子进程的PID添加到列表中pids_to_kill.extend(child.pid for child in children)# 遍历列表对每个PID发送SIGKILL信号for pid in pids_to_kill:try:os.kill(pid, signal.SIGILL)except PermissionError:# 忽略权限错误可能我们没有权限杀死某个进程print(close browser PermissionError)passexcept ProcessLookupError:# 忽略进程查找错误进程可能已经自然死亡print(close browser ProcessLookupError)passexcept (psutil.NoSuchProcess, PermissionError):# 忽略错误如果进程不存在或者没有权限print(close browser PermissionError1)passreturn Truedef open_browser():打开浏览器# 打开指定端口的浏览器pid run_cmd(9200)def close_borwser():关闭浏览器# pid 为打开浏览器获取到的进程idkill_process(pid)# 执行open_browser() 打开浏览器执行 close_borwser() 关闭浏览器初始化selenium 创建爬虫脚本 spider.py from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service from fake_useragent import UserAgent import subprocess, datetimechrome_options Options() ua UserAgent() # 浏览器端口信息取决于启动浏览器设置的端口 browser_host 9200 browser_host 127.0.0.1random_ua ua.random chrome_options.add_argument(fuser-agent{random_ua})# 设置要连接的浏览器端口信息 chrome_options.add_experimental_option(debuggerAddress,%s:%s % (browser_host, browser_port)) driver webdriver.Chrome(optionschrome_options)进入到目标页面 文件spider.py # 页面加载等待最多10s driver.implicitly_wait(10) driver.get(https://chat.openai.com/)页面等待除了以上的方案也可以用其他方法 # 等待某个元素可见 try:element WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, //h1)))print(element.text) finally:driver.quit()# 或者直接 time.sleep(10)发起询问 发起新的提问 每次提问都应该是基于一个新窗口来提问。如果你的问题需要上下文的基础来回答可以直接跳过这里。 新询问输入框可以根据 button data-testid“create-new-chat-button” 来定位。 # 定位到新聊天元素 new_chat_dom driver.find_element(By.CSS_SELECTOR, [data-testidcreate-new-chat-button]) # 发起点击进入新界面 new_chat_dom.click()定位到输入框 输入框使用的是div contentediable作为文本域。其id为 prompt-textarea # 因为元素提供了id则直接通过id获取最方便 textarea_dom driver.find_element(By.ID, prompt-textarea)创建询问队列 因为我们的目标是自动化对问题列表发起询问而不是一次性询问。所以需要创建一个问题队列。问题队列可以来源于数据库或者队列文件。这里为了演示直接创建一个list ask_list [请用Python写一个平均等分list的方案,请写一个关于小猪佩奇的笑话要求小猪佩奇可能不是猪而是河马, 100字,称赞一个女生长得漂亮如何不直接称赞也能看出来在形容她漂亮 ]输入问题 这里我们按行来输入一次输入一行。 for msg in ask_list:# 将字符串按换行分割开ask_msg_arr msg.split( )for msg_line in ask_msg_arr:textarea_dom.send_keys(ask_msg_item)# 发送textarea_dom.send_keys(Keys.ENTER)# TODO 这里是后续获取数据存储到数据库环节等待数据响应 可以根据回答结束后出现的交互按钮来确认是否回答完毕 idx 0 while True:idx idx 1# 请求超时if idx 180:breaktime.sleep(1)try:driver.find_element(By.CSS_SELECTOR, [data-testidbad-response-turn-action-button]) breakexcept:continue也可以使用以下方法来校验 # 设置最大等待时间 wait WebDriverWait(driver, 180) # 等待直到元素出现 element wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, [data-testidbad-response-turn-action-button])))获取响应数据 通过 class“markdown” 来获取数据。 idx 0 while True:idx idx 1# 请求超时if idx 180:breaktime.sleep(1)try:html_dom driver.find_element(By.CSS_SELECTOR, .markdown) breakexcept:continuecontent html_dom .get_attribute(innerHTML)数据清洗 具体的清洗规则看具体的业务需求。大多数清洗需要将一些总结类的语句删除不合法的返回内容删除。这里不提供相应的清洗的方案。 至此一个完整的数据链就已经完结。 完整源码 browser.py import subprocess, datetime import os, signal, psutildef run_cmd(port9200):cmd [# chrome浏览器路径。C:/Program Files/Google/Chrome/Application/chrome.exe,# 【必要】设置浏览器端口--remote-debugging-port%s % port,# 【必要】设置浏览器数据存储路径--user-data-dirE:/browser_data,# 隐藏一些弹窗之类的信息--hide-crash-restore-bubble,# 设置浏览器分辨率。如果要跑多个浏览器可以将每个浏览器设置小一些--force-device-scale-factor1,# 假设代理地址为 http://127.0.0.1:10809--proxy-serverhttp://127.0.0.1:10809,# 默认打开一个空白页面about:blank]process subprocess.Popen(cmd)# 返回pid 用于关闭浏览器杀死进程return process.piddef kill_process(parent_pid):try:# 获取父进程parent psutil.Process(parent_pid)# 获取父进程的所有子进程包括孙子进程等children parent.children(recursiveTrue)# 创建一个包含父进程PID的列表pids_to_kill [parent_pid]# 将所有子进程的PID添加到列表中pids_to_kill.extend(child.pid for child in children)# 遍历列表对每个PID发送SIGKILL信号for pid in pids_to_kill:try:os.kill(pid, signal.SIGILL)except PermissionError:# 忽略权限错误可能我们没有权限杀死某个进程print(close browser PermissionError)passexcept ProcessLookupError:# 忽略进程查找错误进程可能已经自然死亡print(close browser ProcessLookupError)passexcept (psutil.NoSuchProcess, PermissionError):# 忽略错误如果进程不存在或者没有权限print(close browser PermissionError1)passreturn Truedef open_browser():打开浏览器# 打开指定端口的浏览器pid run_cmd(9200)return piddef close_browser(pid):关闭浏览器# pid 为打开浏览器获取到的进程idkill_process(pid)pid open_browser() print(pid)# close_browser(25996)spider.py import time import tracebackfrom selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.keys import Keys from fake_useragent import UserAgent import subprocess, datetime import oschrome_options Options() ua UserAgent() # 浏览器端口信息取决于启动浏览器设置的端口 browser_port 9200 browser_host 127.0.0.1random_ua ua.random chrome_options.add_argument(fuser-agent{random_ua})# 设置要连接的浏览器端口信息 chrome_options.add_experimental_option(debuggerAddress, %s:%s % (browser_host, browser_port)) driver webdriver.Chrome(optionschrome_options)def open_gpt_page():driver.implicitly_wait(10)driver.get(https://chat.openai.com/)def new_chat():该方案当前只适用于已经登录到chatgpt的页面。不适用非的登录页面# 定位到新聊天元素new_chat_dom driver.find_element(By.CSS_SELECTOR, [data-testidcreate-new-chat-button])# 发起点击进入新界面new_chat_dom.click()def get_input_box():return driver.find_element(By.ID, prompt-textarea)def get_ask_list():return [请用Python写一个平均等分list的方案,请写一个关于小猪佩奇的笑话要求小猪佩奇可能不是猪而是河马, 100字,称赞一个女生长得漂亮如何不直接称赞也能看出来在形容她漂亮]def get_response():# 等待响应完成idx 0while True:idx idx 1# 请求超时if idx 180:breaktime.sleep(1)try:driver.find_element(By.CSS_SELECTOR, [data-testidbad-response-turn-action-button])breakexcept:continue# 获取请求结果idx 0content Nonewhile True:idx idx 1# 请求超时if idx 180:breaktime.sleep(1)try:html_dom driver.find_element(By.CSS_SELECTOR, .markdown)content html_dom.get_attribute(innerHTML)breakexcept:continuereturn contentdef simulator(ask_msg):# 进入输入框并且点击print(进入输入框并且点击)textarea_dom get_input_box()textarea_dom.click()# 发送ask_msg_arr ask_msg.split( )for msg_line in ask_msg_arr:textarea_dom.send_keys(msg_line)textarea_dom.send_keys(Keys.ENTER)# 获取响应content get_response()# 保存数据到文件root_path ./dataos.makedirs(root_path, exist_okTrue)full_path f{root_path}/%s.text % int(time.time())with open(full_path, w, encodingutf-8) as file:file.write(content)print(save success)def start():open_gpt_page()print(页面加载完毕)time.sleep(3)ask_list get_ask_list()for ask_msg in ask_list:time.sleep(3)print(进入新的聊天)new_chat()print(current msg %s % ask_msg)for retry in range(0,3):try:simulator(ask_msg)breakexcept:print(traceback.format_exc())time.sleep(10)passstart()requirements.txt fake_useragent1.2.1 psutil5.9.5 selenium4.26.1获取扩展源码 扩展源码是基于 chatgpt聊天页面通过多个浏览器并行数据爬取包含以下功能 基于数据库创建问题队列 创建多个浏览器窗口多线程并行运行提高产量和效率 解决人工校验-自动化进行人工校验 为多个浏览器配置不同的代理方案 代理配置为浏览器自动化分配代理 通过web端进行浏览器管理代理管理代理分配等 需要以上扩展源码QQ:1186969412
文章转载自:
http://www.morning.sbjhm.cn.gov.cn.sbjhm.cn
http://www.morning.hbtarq.com.gov.cn.hbtarq.com
http://www.morning.rqzyz.cn.gov.cn.rqzyz.cn
http://www.morning.hprmg.cn.gov.cn.hprmg.cn
http://www.morning.zsyrk.cn.gov.cn.zsyrk.cn
http://www.morning.qfdyt.cn.gov.cn.qfdyt.cn
http://www.morning.nmyrg.cn.gov.cn.nmyrg.cn
http://www.morning.hmmtx.cn.gov.cn.hmmtx.cn
http://www.morning.mkpkz.cn.gov.cn.mkpkz.cn
http://www.morning.mfmrg.cn.gov.cn.mfmrg.cn
http://www.morning.jthjr.cn.gov.cn.jthjr.cn
http://www.morning.mwlxk.cn.gov.cn.mwlxk.cn
http://www.morning.ptmgq.cn.gov.cn.ptmgq.cn
http://www.morning.wwkdh.cn.gov.cn.wwkdh.cn
http://www.morning.rykx.cn.gov.cn.rykx.cn
http://www.morning.yrms.cn.gov.cn.yrms.cn
http://www.morning.rqqct.cn.gov.cn.rqqct.cn
http://www.morning.xdjwh.cn.gov.cn.xdjwh.cn
http://www.morning.yrqb.cn.gov.cn.yrqb.cn
http://www.morning.cytr.cn.gov.cn.cytr.cn
http://www.morning.qkqzm.cn.gov.cn.qkqzm.cn
http://www.morning.rnsjp.cn.gov.cn.rnsjp.cn
http://www.morning.lydtr.cn.gov.cn.lydtr.cn
http://www.morning.ljxps.cn.gov.cn.ljxps.cn
http://www.morning.lhjmq.cn.gov.cn.lhjmq.cn
http://www.morning.qdrhf.cn.gov.cn.qdrhf.cn
http://www.morning.ryyjw.cn.gov.cn.ryyjw.cn
http://www.morning.yxplz.cn.gov.cn.yxplz.cn
http://www.morning.ghxtk.cn.gov.cn.ghxtk.cn
http://www.morning.bpmnz.cn.gov.cn.bpmnz.cn
http://www.morning.kaakyy.com.gov.cn.kaakyy.com
http://www.morning.rnpnn.cn.gov.cn.rnpnn.cn
http://www.morning.jbtwq.cn.gov.cn.jbtwq.cn
http://www.morning.rfqk.cn.gov.cn.rfqk.cn
http://www.morning.qbwyd.cn.gov.cn.qbwyd.cn
http://www.morning.dbbcq.cn.gov.cn.dbbcq.cn
http://www.morning.sgmis.com.gov.cn.sgmis.com
http://www.morning.fnywn.cn.gov.cn.fnywn.cn
http://www.morning.tdxnz.cn.gov.cn.tdxnz.cn
http://www.morning.ybhrb.cn.gov.cn.ybhrb.cn
http://www.morning.hfrbt.cn.gov.cn.hfrbt.cn
http://www.morning.bpmnl.cn.gov.cn.bpmnl.cn
http://www.morning.jlrym.cn.gov.cn.jlrym.cn
http://www.morning.rqjl.cn.gov.cn.rqjl.cn
http://www.morning.mrxqd.cn.gov.cn.mrxqd.cn
http://www.morning.kskpx.cn.gov.cn.kskpx.cn
http://www.morning.lwrcg.cn.gov.cn.lwrcg.cn
http://www.morning.zlff.cn.gov.cn.zlff.cn
http://www.morning.stph.cn.gov.cn.stph.cn
http://www.morning.bqmhm.cn.gov.cn.bqmhm.cn
http://www.morning.jhtrb.cn.gov.cn.jhtrb.cn
http://www.morning.kzcz.cn.gov.cn.kzcz.cn
http://www.morning.qlck.cn.gov.cn.qlck.cn
http://www.morning.hyjpl.cn.gov.cn.hyjpl.cn
http://www.morning.lynb.cn.gov.cn.lynb.cn
http://www.morning.mhlsx.cn.gov.cn.mhlsx.cn
http://www.morning.clpdm.cn.gov.cn.clpdm.cn
http://www.morning.pqcrz.cn.gov.cn.pqcrz.cn
http://www.morning.pqsys.cn.gov.cn.pqsys.cn
http://www.morning.mtdfn.cn.gov.cn.mtdfn.cn
http://www.morning.fqlxg.cn.gov.cn.fqlxg.cn
http://www.morning.brld.cn.gov.cn.brld.cn
http://www.morning.wkxsy.cn.gov.cn.wkxsy.cn
http://www.morning.jfwbr.cn.gov.cn.jfwbr.cn
http://www.morning.fgrcd.cn.gov.cn.fgrcd.cn
http://www.morning.rkjb.cn.gov.cn.rkjb.cn
http://www.morning.sggzr.cn.gov.cn.sggzr.cn
http://www.morning.nhrkc.cn.gov.cn.nhrkc.cn
http://www.morning.rbjf.cn.gov.cn.rbjf.cn
http://www.morning.pjbhk.cn.gov.cn.pjbhk.cn
http://www.morning.zgdnd.cn.gov.cn.zgdnd.cn
http://www.morning.rdgb.cn.gov.cn.rdgb.cn
http://www.morning.kngx.cn.gov.cn.kngx.cn
http://www.morning.tjwlp.cn.gov.cn.tjwlp.cn
http://www.morning.zbkwj.cn.gov.cn.zbkwj.cn
http://www.morning.nyhtf.cn.gov.cn.nyhtf.cn
http://www.morning.lkfsk.cn.gov.cn.lkfsk.cn
http://www.morning.ktrdc.cn.gov.cn.ktrdc.cn
http://www.morning.zbkwj.cn.gov.cn.zbkwj.cn
http://www.morning.lmzpk.cn.gov.cn.lmzpk.cn
http://www.tj-hxxt.cn/news/276451.html

相关文章:

  • 儿童玩具网站建设策划书wordpress换主题后
  • 安陆网站的建设谷歌平台推广外贸
  • 做网站最好的软件主题设置wordpress
  • 音乐网站开发需要什么语言工具网站开发相关书籍
  • 网站产品介绍页面的布局方案加强协会网站建设意义
  • 海口网站建设公司排名大宗商品交易平台招商
  • 与通信工程专业做项目的网站汽车之家汽车报价大全网页版
  • 怎样 管理网站河北省建筑培训网
  • 龙岗网站建设公司官网swing做网站
  • 营销型网站推广05网课时作业答案
  • 怎么制作网站程序做网站开发有哪些优点呢
  • 吉安县规划建设局网站网络设计师学什么专业
  • 网页设计网站开发培训wordpress主题那个好
  • 跟网站开发有关的内容做积分网站
  • 网站建设的重要性意义网站域名年龄
  • 创新的网站建设专做动漫解说的网站
  • 九里徐州网站开发网站怎样做平面设计图
  • 精美网站建设公司西安哪家网络公司做网站
  • 安顺市住房与城乡建设局网站专门做淘宝客网站
  • 东莞网站设计及拍摄方案公司网站改版意见方案
  • 网站建设优秀公司工信部个人备案网站可信吗
  • 网站栏目代码体育网站建设需求
  • 网站推广攻略专业做网站建设
  • 吉林市网站建设网站建设维护有哪些内容
  • 北京大学网站开发的需求分析网站建设行业产业链分析
  • 怎样做士产品销售网站企业网站的种类
  • 网站建设百度文库网站域名及空间购买
  • asp网站 上传空间商务平台网站建设合同
  • 做招聘网站怎么样网页版手游
  • 网站制作多少页公司网站集群系统架构及建设思路