0


【NLP开发】Python实现聊天机器人(Selenium、七嘴八舌)

在这里插入图片描述
🍺NLP开发系列相关文章编写如下🍺:1🎈【NLP开发】Python实现词云图🎈2🎈【NLP开发】Python实现图片文字识别🎈3🎈【NLP开发】Python实现中文、英文分词🎈4🎈【NLP开发】Python实现聊天机器人(ELIZA))🎈5🎈【NLP开发】Python实现聊天机器人(ALICE)🎈6🎈【NLP开发】Python实现聊天机器人(ChatterBot)🎈7🎈【NLP开发】Python实现聊天机器人(微软Azure)🎈8🎈【NLP开发】Python实现聊天机器人(微软小冰)🎈9🎈【NLP开发】Python实现聊天机器人(钉钉机器人)🎈10🎈【NLP开发】Python实现聊天机器人(微信机器人)🎈11🎈【NLP开发】Python实现聊天机器人(Selenium、七嘴八舌)🎈

文章目录

1、简介

随着时代的变迁,聊天机器人逐渐步入正轨,各大平台也相继推出自己的开放平台以满足机器人的开发,对于机器人开发者们来说,既是机遇,也是挑战!
在这里插入图片描述

1.1 安装WebDriver

(1)使用 WebDriver 自动执行 Microsoft Edge:
https://learn.microsoft.com/zh-cn/microsoft-edge/webdriver-chromium/?tabs=python

WebDriver 允许你通过模拟用户交互来自动执行 Microsoft Edge。 使用 WebDriver 的测试相比于在浏览器中运行的 JavaScript 单元测试有一些优势:

  • WebDriver 可以使用在浏览器中运行的 JavaScript 不可使用的功能和信息。
  • WebDriver 比 JavaScript 单元测试更准确地模拟用户事件或 OS 级事件。
  • WebDriver 管理单个测试会话中的多个窗口、选项卡、网页。
  • WebDriver 在特定计算机上运行多个 Microsoft Edge 会话。

(2)下载 Microsoft Edge WebDriver:
请确保安装的 Edge WebDriver 版本与浏览器版本匹配,如下所示:
转到 edge://settings/help 并记下你的 Microsoft Edge 版本。

# edge
edge://settings/help
Edge driver:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

# chrome
chrome://version/
Chrome driver:http://chromedriver.storage.googleapis.com/index.html

在这里插入图片描述

下载 Microsoft Edge WebDriver。
https://developer.microsoft.com/zh-cn/microsoft-edge/tools/webdriver/

在这里插入图片描述
下载完成后,将 msedgedriver 可执行文件提取到首选位置。 将可执行文件所在的文件夹添加到你的 PATH 环境变量。或者把msedgedriver.exe放在Python的安装文件夹里也可以。
在这里插入图片描述

1.2 安装Python

下载地址:
https://www.python.org/downloads/

在这里插入图片描述
Python的安装界面如下:
在这里插入图片描述
Python的安装后文件夹如下:
在这里插入图片描述

具体安装可以查看如下文章:
【小沐学python】(一)Python开发准备

打印Python的版本信息:
在这里插入图片描述

1.3 安装Selenium

下载 Microsoft Edge WebDriver 后,必须下载的最后一个组件是 WebDriver 测试框架。 测试作者使用 WebDriver 测试框架编写端到端测试并自动执行浏览器。 WebDriver 测试框架提供特定于语言的界面,用于将代码转换为 Edge WebDriver 在 Microsoft Edge 中运行的命令。 WebDriver 测试框架适用于所有主要平台和语言,例如 Python、Java、C#、Ruby、JavaScript。

在这里插入图片描述

Selenium WebDriver 是一个开放源代码测试框架,可在任何平台上使用,并为 Java、Python、C#、Ruby、JavaScript 提供语言绑定。 注意:运行 Selenium 4 测试需要 Python 3。 不支持 (Python 2.7。)

Selenium 是一个用于 Web 应用程序测试的工具。Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括 IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge 等。

若要使用 WebDriver 自动执行 Microsoft Edge,如果使用 Selenium,则必须使用 Selenium 4,它具有对 Microsoft Edge (Chromium) 的内置支持。

Firefox浏览器驱动:geckodriver
Chrome浏览器驱动:chromedriver ,CNPM Binaries Mirror (npmmirror.com), taobao备用地址
IE浏览器驱动:IEDriverServer
Edge浏览器驱动:MicrosoftWebDriver
Opera浏览器驱动:operadriver
PhantomJS浏览器驱动:phantomjs
  • 自动化 Microsoft Edge: Selenium 使用 EdgeDriver 类来管理 Microsoft Edge 会话。 - 启动 Microsoft Edge 会话。- 指示 Microsoft Edge 转到必应。- 搜索“WebDriver”。- 休眠几秒钟,以便查看结果。

安装python的selenium库:

pip install selenium

在这里插入图片描述

selenium的测试代码片段如下:

from selenium import webdriver

# driver = webdriver.Firefox()   # Firefox浏览器# driver = webdriver.Chrome()    # Chrome浏览器# driver = webdriver.Ie()        # Internet Explorer浏览器# driver = webdriver.Opera()     # Opera浏览器# driver = webdriver.PhantomJS()   # PhantomJS# driver = webdriver.Edge("C:\Python38\msedgedriver.exe")      # Edge浏览器
driver = webdriver.Edge()# 打开网页
url ="http://www.baidu.com"
driver.get(url)# TODO

driver.close()

在这里插入图片描述

from selenium import webdriver
from msedge.selenium_tools import Edge, EdgeOptions

options = EdgeOptions()
options.use_chromium =True
options.binary_location =r"C:\Program Files (x86)\Microsoft\EdgeCore\110.0.1587.46\msedge.exe"# 浏览器的位置

driver = Edge(options=options, executable_path=r"C:\Python38\msedgedriver.exe")# 相应的浏览器的驱动位置
driver.get("http://www.baidu.com")

在这里插入图片描述

  • 自动化 Microsoft Edge
from selenium import webdriver
from selenium.webdriver.common.by import By
import time

driver = webdriver.Edge()

driver.get('https://bing.com')

element = driver.find_element(By.ID,'sb_form_q')
element.send_keys('WebDriver')
element.submit()

time.sleep(5)
driver.quit()
  • 管理和配置 Edge WebDriver 服务
from selenium import webdriver
from selenium.webdriver.edge.service import Service

service = Service(verbose =True)

driver = webdriver.Edge(service = service)
  • 选择特定浏览器二进制文件
from selenium import webdriver
from selenium.webdriver.edge.options import Options

options = Options()
options.binary_location =r"C:\Program Files (x86)\Microsoft\Edge Beta\Application\msedge.exe"

driver = webdriver.Edge(options = options)
  • 传递额外的命令行参数
from selenium import webdriver
from selenium.webdriver.edge.options import Options

options = Options()
options.add_argument("headless")

driver = webdriver.Edge(options = options)
  • 其他 WebDriver 安装选项
docker run -d-p9515:9515 mcr.microsoft.com/msedge/msedgedriver
  • sendkeys可以模拟键盘输入,也可以用来模拟键盘上的按键,甚至是组合键。
    键值解释send_keys(Keys.BACK_SPACE)删除键BackSpacesend_keys(Keys.SPACE)空格键Spacesend_keys(Keys.TAB)制表键Tabsend_keys(Keys.ESPACE)回退键Escsend_keys(Keys.ENTER)回车键Entersend_keys(Keys.CONTROL,‘a’)全选Ctrl+Asend_keys(Keys.CONTROL,‘c’)复制CTRL+Csend_keys(Keys.CONTROL,‘x’)剪切CTRL+Xsend_keys(Keys.CONTROL,‘v’)粘贴Ctrl+Vsend_keys(Keys.F1)键盘F1send_keys(Keys.F12)键盘F12

  • 模糊定位方式 driver.find_element_by_xpath(‘//[contains(@id,“ogin-emai”)]‘).send_keys(“小沐测试”) driver.find_element_by_xpath(’//[starts-with(@id,“login-emai”)]’).send_keys(“小沐测试”) driver.find_element_by_xpath(‘//*[ends-with(@id,“ogin-email”)]’).send_keys(“小沐测试”)

## 旧版本Selenium元素定位代码:# inputTag = driver.find_element_by_id("value")  # 利用ID查找# inputTags = driver.find_element_by_class_name("value")  # 利用类名查找# inputTag = driver.find_element_by_name("value")  # 利用name属性查找# inputTag = driver.find_element_by_tag_name("value")  # 利用标签名查找# inputTag = driver.find_element_by_xpath("value")  # 利用xpath查找# inputTag = driver.find_element_by_css_selector("value")  # 利用CSS选择器查找## 新版本Selenium元素定位代码:# inputTag = driver.find_element(By.ID, "value") # 利用ID查找# inputTag = driver.find_element(By.CLASS_NAME, "value")  # 利用类名查找# inputTag = driver.find_element(By.NAME, "value")  # 利用name属性查找# inputTag = driver.find_element(By.TAG_NAME, "value") # 利用标签名查找# inputTag = driver.find_element(By.XPATH, "value") # 利用xpath查找# inputTag = driver.find_element(By.CSS_SELETOR, "value") # 利用CSS选择器查找

2、青云客机器人

官网地址:
http://api.qingyunke.com/

# 导入模块import requests
from urllib import parse

# 组装请求deftest_get(msg):
    url ='http://api.qingyunke.com/api.php?key=free&appid=0&msg={}'.format(parse.quote(msg))
    html = requests.get(url)return html.json()["content"]# 解析返回并打印whileTrue:
    msg =input("我:")
    res = test_get(msg)print("答:", res)

在这里插入图片描述
上面图中有一个在线机器人:人工智能聊天DEMO
闲得无聊的小沐现在编写一段Python代码和它聊会天:

# -*- coding: utf-8 -*-# @File    : test_robot_qingke.py# @Time    : 2023/02/19 11:21# @Author  : 爱看书的小沐# @Blog    : https://blog.csdn.net/hhy321?type=blog# @Desc    : selenium+青云客机器人。from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep

driver = webdriver.Edge()
driver.get('http://api.qingyunke.com/#products')

sleep(5)
msg_input = driver.find_element(By.ID,'ui_inp_msg')
msg_send = driver.find_element(By.CLASS_NAME,"send")

msg_list =['hello world','我是可爱的小沐,你是谁?','我是谁?','给小沐讲一个笑话','小沐写一封信给未来的自己']
msg_count =1for i inrange(len(msg_list)):
    msg_item = msg_list[i]print("小沐>> ", msg_item)
    msg_input.send_keys(msg_item)
    msg_send.click()
    sleep(3)
    
    ul = driver.find_element(By.XPATH,'//ul[@id="ui_msg_box"]')
    lis = ul.find_elements(By.XPATH,'li')
    count =len(lis)# print("msg's count: ", count)print("青云客>> ", lis[-1].text)
    sleep(1)print("小沐>> Byte!")
sleep(15)
driver.close()

Selenium浏览器运行如下:
在这里插入图片描述
Python代码输出如下:
在这里插入图片描述

3、思知机器人

官网地址:
https://www.ownthink.com/robot.html

import json
import requests

sess = requests.get('https://api.ownthink.com/bot?spoken=姚明多高啊?')

answer = sess.text
answer = json.loads(answer)print(answer)

在这里插入图片描述
上面图中有一个在线机器人:思知机器人
郁闷的小沐现在编写一段Python代码和它聊会天:

# -*- coding: utf-8 -*-# @File    : test_robot_sizhi.py# @Time    : 2023/02/19 11:21# @Author  : 爱看书的小沐# @Blog    : https://blog.csdn.net/hhy321?type=blog# @Desc    : selenium+思知机器人。from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from time import sleep

driver = webdriver.Edge()
driver.get('https://www.ownthink.com/robot.html')
sleep(5)

msg_footer = driver.find_element(By.CLASS_NAME,"footer")
msg_input = msg_footer.find_element(By.XPATH,'//input')
msg_list =['hello world','我是可爱的小沐,你是谁?','我是谁?','给小沐讲一个笑话','小沐写一封信给未来的自己']for i inrange(len(msg_list)):
    msg_item = msg_list[i]print("小沐>> ", msg_item)
    msg_input.send_keys(msg_item)
    msg_input.send_keys(Keys.ENTER)
    sleep(1)

    div_body = driver.find_element(By.XPATH,'//div[@class="body"]')
    div_chats = div_body.find_elements(By.XPATH,'//*[contains(@class,"robot")]')
    count =len(div_chats)print("msg's count: ", count)
    
    sleep(3)print("思知机器人>> ", div_chats[-1].text)print("小沐>> Byte!")
sleep(15)
driver.close()

Selenium浏览器运行如下:
在这里插入图片描述

Python代码输出如下:
在这里插入图片描述
在这里插入图片描述

4、梦幻机器人

官网地址:
https://drea.cc/
在这里插入图片描述
上面图中有一个在线机器人:梦幻smile机器人
没睡醒的小沐现在编写一段Python代码和它聊会天,提提神:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from timeimportsleep

driver = webdriver.Edge()
driver.get('https://drea.cc/chat.php')
sleep(15)

msg_footer = driver.find_element(By.ID, "text_content")
msg_input = msg_footer.find_element(By.XPATH, '//textarea')
msg_list =['hello world', '我是可爱的小沐,你是谁?', '我是谁?', '给小沐讲一个笑话', '小沐写一封信给未来的自己']
msg_count =2foriin range(len(msg_list)):
    msg_item = msg_list[i]
    print("小沐>> ", msg_item)
    msg_input.send_keys(msg_item)
    msg_input.send_keys(Keys.ENTER)
    sleep(3)

    div_body = driver.find_element(By.XPATH, '//div[@class="message"]')
    div_messages = div_body.find_elements(By.XPATH, '//div[@class="text"]')
    count = len(div_messages)
    print("梦幻机器人>> ", div_messages[count-2].text)
    sleep(1)

print("小沐>> Byte!")
sleep(15)
driver.close()

Selenium浏览器运行如下:
在这里插入图片描述

Python代码输出如下:
在这里插入图片描述

5、小i机器人

官网地址:
https://drea.cc/
在这里插入图片描述

上面图中有一个在线机器人:小i机器人
快饿晕的小沐现在编写一段Python代码和它聊会天,提提神:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from time import sleep

driver = webdriver.Edge()
driver.get('http://i.xiaoi.com/#')
sleep(5)

msg_input = driver.find_element(By.ID,"inputArea")
msg_list =['hello world','我是可爱的小沐,你是谁?','我是谁?','给小沐讲一个笑话','小沐写一封信给未来的自己']
msg_count =0for i inrange(len(msg_list)):
    msg_item = msg_list[i]print("小沐>> ", msg_item)
    msg_input.send_keys(msg_item)
    msg_input.send_keys(Keys.ENTER)
    sleep(3)

    div_body = driver.find_element(By.XPATH,'//div[@id="outputArea"]')
    div_messages = div_body.find_elements(By.XPATH,'//div[@class="robotContent"]')
    count =len(div_messages)print("msg's count: ", msg_count, count)print("小i机器人>> ", div_messages[len(div_messages)-1].text)
    sleep(1)print("小沐>> Byte!")
sleep(15)
driver.close()

Selenium浏览器运行如下:
在这里插入图片描述

Python代码输出如下:
在这里插入图片描述

6、七嘴八舌

有一天,小沐、邱大大、青云客、思知机器人在一起闲聊。
在这里插入图片描述

结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;

╮( ̄▽ ̄)╭

如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;

o_O???

如果您需要相关功能的代码定制化开发,可以留言私信作者;

(✿◡‿◡)

感谢各位大佬童鞋们的支持!

( ´ ▽´ )ノ ( ´ ▽´)っ!!!
在这里插入图片描述


本文转载自: https://blog.csdn.net/hhy321/article/details/129107280
版权归原作者 爱看书的小沐 所有, 如有侵权,请联系我们删除。

“【NLP开发】Python实现聊天机器人(Selenium、七嘴八舌)”的评论:

还没有评论