Selenium 可以直接控制瀏覽器來操作畫面上的元件,常用於動態爬蟲。
如果你花大錢買了 gpt plus,卻發現打 API 還得額外花錢(對,就是我),可以試看看以下的方法
優點
月費 20 USD 吃到飽
缺點
1小時內打太多資料會限制 45 分鐘
pip install selenium
pip install undetected-chromedriver
driver_path
指定 chrome_driver 的位置,如果用 window 系統可以手動點 chrome_driver.exe 或是指定位置自動打開,linux 系統就不用指定了。
from selenium.webdriver.remote.webdriver import By
import undetected_chromedriver as uc
from selenium.webdriver.common.keys import Keys
class gptParser:
def __init__(self,
driver,
gpt_url: str = 'https://chat.openai.com/'):
""" ChatGPT parser
Args:
driver_path (str, optional): The path of the chromedriver.
gpt_url (str, optional): The url of ChatGPT.
"""
# Start a webdriver instance and open ChatGPT
self.driver = driver
self.driver.get(gpt_url)
@staticmethod
def get_driver(driver_path: str = None,):
return uc.Chrome() if driver_path is None else uc.Chrome(driver_path)
def __call__(self, msg: str):
# Find the input field and send a question
input_field = self.driver.find_elements(
By.TAG_NAME, 'textarea')[0]
input_field.send_keys(msg)
input_field.send_keys(Keys.RETURN)
def read_respond(self):
try:
response = self.driver.find_elements(By.TAG_NAME, 'p')[-2].text
return response
except:
return None
def new_chat(self):
self.driver.find_element(By.XPATH, '//a[text()="New chat"]').click()
def close(self):
self.driver.quit()
執行後會自動開啟 gpt 網站,請自行登入
driver = gptParser.get_driver()
gpt_parser = gptParser(driver)
登入後就能開始執行你的指令了,結果存在 response 變數
query = "1+1=?"
gpt_parser(query) # send the query
time.sleep(1)
response = gpt_parser.read_respond() # response = 2