大模型claude自动回答知乎给我推荐的问题

585 阅读3分钟

每天都要刷刷知乎,有一天突发奇想,要不要试试让大模型claude自动回答知乎提问

之前搞过chatgpt自动回答知乎提问,奈何chatgpt给我封号了以及封了API,所以这次使用chatgpt的强有力竞争者claude

主要思路

使用selenium配合google chrome的webdriver作为工具,爬取知乎的问题推荐栏给我的提问以及链接,将问题输入给claude的页面,获得回答后爬取claude的回答输入到知乎的问题回答栏,并发表。以此实现知乎推荐提问的自动回答。

代码展示

第一部分,配置selenium默认信息,登录claude

此代码在进入登录页面后会暂停60s,请在这个间隔手动输入邮箱并获取验证码登录。),登录成功后会向claude发送'hello'问候,并提示claude,请用知乎高赞的方式回答下列问题:


## 配置默认信息
options = webdriver.ChromeOptions()
prefs = {'profile.default_content_settings.popups': 0, 'download.default_directory': 'D:\\bing_zhihu\\'}
options.add_experimental_option('prefs', prefs)
ziwu = webdriver.Chrome(options=options)

## 访问claude
ziwu.get("https://claude.ai/chat/1934be9f-3577-4b66-a03a-473d2d36036d")

## 暂停60s以手动输入邮箱验证码登录
time.sleep(60)

## 发送hello问候
ziwu.switch_to.active_element.send_keys('hello')
ziwu.find_element(By.XPATH,"/html/body/main/div/div/fieldset/div[2]/div").click()
time.sleep(5)

## 提问使用知乎高赞的方式回答
question = '请用知乎高赞的方式回答下列问题,请直接输出回答,不要输入任何与回答无关的话'
ziwu.switch_to.active_element.send_keys(str(question))
ziwu.find_element(By.XPATH,"/html/body/div[5]/div/div[5]/div/fieldset/div[2]/button").click()
time.sleep(60)

## 获取回复内容
page_text = ziwu.page_source
ques_list = re.findall(r'<div class="contents"><p class="whitespace-pre-wrap">(.*?)</p></div>',page_text)
answer = ques_list[-1]
ziwu.refresh()
time.sleep(5)`

第二部分,准备好claude自动回答函数,即函数输入内容为需要回答的问题,输出部分为回答的结果


def ask_and_answer(question):`
    
    ziwu.refresh()
    time.sleep(5)
    
    ## 输入问题
    question = str(question)
    ziwu.switch_to.active_element.send_keys(str(question))
    ziwu.find_element(By.XPATH,"/html/body/div[3]/div/div[5]/div/fieldset/div[2]/button").click()
    time.sleep(120)
    
    ## 获取回答内容
    page_text = ziwu.page_source
    ques_list = re.findall(r'<div class="contents"><p class="whitespace-pre-wrap">(.*?)</p></div>',page_text,re.S)
    answer = re.sub('<(.*?)>','',ques_list[-1]).replace('\n','')
    print(str(answer))
    ziwu.refresh()
    time.sleep(5)
    
    return answer

``` ##

第三部分,爬取知乎提问的内容,输入到之前写好的函数,获取回答并输入到知乎回答栏发表


options = webdriver.ChromeOptions()
prefs = {'profile.default_content_settings.popups': 0, 'download.default_directory': 'D:\\bing_zhihu\\'}
options.add_experimental_option('prefs', prefs)
zhihu = webdriver.Chrome(options=options)

## 登录问题推荐栏
zhihu.get('https://www.zhihu.com/creator/featured-question/recommend')
 
## 请扫码登录
sleep(15)

## 登陆后进入问题推荐栏目
zhihu.get('https://www.zhihu.com/creator/featured-question/recommend')
sleep(20)

## 获取提问的问题以及问题链接
page_textzhi = zhihu.page_source  
ques_listzhi = re.findall(r'<div class="css-1rs9lm3"><a class="css-1s2rixt" href="(.*?) target=',page_textzhi)
req_listzhi = re.findall(r'" target="_blank">(.*?)</a><div class="css',page_textzhi)

## 逐个将问题输入claude,并获取回答放到知乎回答栏目
link_list = []
for link in ques_listzhi:
    link = link.split(' ')[0].replace('?','/').replace('"','')
    link_list.append(link)
for num in range(0,len(link_list)-1):
    # 输入提问
    answerzhihu = ask_and_answer(req_listzhi[num].split('</div>')[-1])
    # 访问回答问题栏
    zhihu.get(link_list[num])
    sleep(10)
    # 点击回答按钮 zhihu.find_element(By.XPATH,"/html/body/div[1]/div/main/div/div/div[1]/div[2]/div/div[2]/div/div/div[1]/a/button").click()
    sleep(2)    
    # 输入回答 zhihu.switch_to.active_element.send_keys(answerzhihu.replace('\n','').replace("'",''))
    sleep(2)
    ## 点击发布按钮
    zhihu.find_element(By.XPATH,"/html/body/div[1]/div/main/div/div/div[2]/div/div/div/div[2]/div/div[1]/div/button[2]").click()       
    sleep(5)

全部代码

# -*- coding: utf-8 -*-

import os
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
import datetime
from dateutil.relativedelta import relativedelta

from lxml import etree
# # import pymysql
# import xlwt 

import re
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select


## 登陆部分,并发送hello 


options = webdriver.ChromeOptions()
prefs = {'profile.default_content_settings.popups': 0, 'download.default_directory': 'D:\\bing_zhihu\\'}
options.add_experimental_option('prefs', prefs)
ziwu = webdriver.Chrome(options=options)

 
# try:
ziwu.get("https://claude.ai/chat/1934be9f-3577-4b66-a03a-473d2d36036d")
time.sleep(60)
ziwu.switch_to.active_element.send_keys('hello')

# ziwu.find_element(By.CLASS_NAME,"flex items-center flex-grow overflow-x-hidden").send_keys("hello word")
# ziwu.find_element(By.NAME,"username").send_keys("airglow2")
# ziwu.find_element(By.NAME,"password").send_keys("123456")
ziwu.find_element(By.XPATH,"/html/body/main/div/div/fieldset/div[2]/div").click()

time.sleep(5)

question = '请用知乎高赞的方式回答下列问题,请直接输出回答,不要输入任何与回答无关的话'

ziwu.switch_to.active_element.send_keys(str(question))



ziwu.find_element(By.XPATH,"/html/body/div[5]/div/div[5]/div/fieldset/div[2]/button").click()

time.sleep(60)

page_text = ziwu.page_source

ques_list = re.findall(r'<div class="contents"><p class="whitespace-pre-wrap">(.*?)</p></div>',page_text)

answer = ques_list[-1]

# print(str(answer))

ziwu.refresh()

time.sleep(5)

## 发送需要对话的内容,并获取回答

def ask_and_answer(question):
    
    ziwu.refresh()

    time.sleep(5)    
    
    question = str(question)
    
    

    ziwu.switch_to.active_element.send_keys(str(question))
    
    
    
    ziwu.find_element(By.XPATH,"/html/body/div[3]/div/div[5]/div/fieldset/div[2]/button").click()
    
    
    # /html/body/div[3]/div/div[5]/div/fieldset/div[2]/button/svg/path
    
    time.sleep(120)
    
    page_text = ziwu.page_source
    
    ques_list = re.findall(r'<div class="contents"><p class="whitespace-pre-wrap">(.*?)</p></div>',page_text,re.S)
    
    answer = re.sub('<(.*?)>','',ques_list[-1]).replace('\n','')
    
    print(str(answer))
    
    ziwu.refresh()
    
    time.sleep(5)
    
    return answer

options = webdriver.ChromeOptions()
prefs = {'profile.default_content_settings.popups': 0, 'download.default_directory': 'D:\\bing_zhihu\\'}
options.add_experimental_option('prefs', prefs)
zhihu = webdriver.Chrome(options=options)
# driver = webdriver.Edge('D:\conda\Scripts\MicrosoftWebDriver.exe') 

zhihu.get('https://www.zhihu.com/creator/featured-question/recommend')
 
sleep(15)

# def zhizhu():

zhihu.get('https://www.zhihu.com/creator/featured-question/recommend')

sleep(20)
page_textzhi = zhihu.page_source  
ques_listzhi = re.findall(r'<div class="css-1rs9lm3"><a class="css-1s2rixt" href="(.*?) target=',page_textzhi)
req_listzhi = re.findall(r'" target="_blank">(.*?)</a><div class="css',page_textzhi)


# '<div class="css-1rs9lm3"><a class="css-1s2rixt" href="(.*?) target='

# '" target="_blank">(.*?)</a><div class="css'
link_list = []
for link in ques_listzhi:
    link = link.split(' ')[0].replace('?','/').replace('"','')
    link_list.append(link)
    
for num in range(0,len(link_list)-1):
    
    
    # ask_and_answer('如何评价放寒假')
    
    answerzhihu = ask_and_answer(req_listzhi[num].split('</div>')[-1])
    
    # answer = 'test'
    # driver.switch_to.active_element.send_keys(answer)
    zhihu.get(link_list[num])
    sleep(10)
    # try:
    #     driver.find_element(By.LINK_TEXT,"发布回答").click()
    #     sleep(5)
    # except:
    #     print('error')
    zhihu.find_element(By.XPATH,"/html/body/div[1]/div/main/div/div/div[1]/div[2]/div/div[2]/div/div/div[1]/a/button").click()
    sleep(2)    
    zhihu.switch_to.active_element.send_keys(answerzhihu.replace('\n','').replace("'",''))
    sleep(2)
    # driver.find_element(By.LINK_TEXT,"发布回答").click()
    # sleep(30)
    zhihu.find_element(By.XPATH,"/html/body/div[1]/div/main/div/div/div[2]/div/div/div/div[2]/div/div[1]/div/button[2]").click()

            
    sleep(5)
# ask_and_answer