当编程遇上AI,纵享丝滑

news2024/11/27 22:42:20

目录

前言

一、提出需求

 二、检查代码

三、进一步提出需求

总结 


前言

自从CHATGPT火了以后,我发现我身边的人再也不怕写报告了,什么个人总结,汇报材料,年度总结,伸手就来(反正哪些报告也没人看),除了一些针对性很强的文章(这里说的是针对性,不是技术性)基本上人工智能都能说个一二三,以前是天下文章一大抄,看你会抄不会抄,现在是看你会问不会问,只要问的准,答案应该都是准确的。下面根据我之前记的一个爬虫笔记,我们用人工智能来寻找答案,当时还有一些小错误,我们看人工智能能不能解决。

一、提出需求

在“编程小白的自学笔记十二(python爬虫入门四Selenium的使用实例二)”中,我们是找到了百度贴吧的广告子页面,然后点击了第一个广告,我们尝试这样问下:

请用python代码编写爬虫,实现找到百度贴吧的广告子页面,点击第一个广告

 

 我们发现好像不能提爬虫这个关键字,那么我们修改问题:请用python代码编写代码,实现找到百度贴吧的广告子页面,点击第一个广告。这次可以了

 

 二、检查代码

 我们来看看人工智能的全部回答内容:

这里提供一个Python+Selenium的示例代码:

from selenium import webdriver

# 打开chrome浏览器
driver = webdriver.Chrome()
# 打开百度贴吧
driver.get('https://tieba.baidu.com/')
# 等待页面加载完成
driver.implicitly_wait(10)
# 找到广告iframe并切换到它
iframe = driver.find_element_by_xpath('//iframe[@class="iframe_wrapper"]')
driver.switch_to.frame(iframe)
# 找到第一个广告并点击
ad = driver.find_element_by_xpath('//div[@class="ad-list"]//a')
ad.click()

这段代码会先打开Chrome浏览器,并进入百度贴吧首页。然后,它会等待页面加载完成,找到广告的iframe并切换到它。接着,它会找到第一个广告并点击它。注意,这段代码假设第一个广告是在一个类名为ad-list的div里,如果实际情况不同,需要修改xpath表达式。

 我们查看代码,在逻辑上没有任何问题,而且注释什么的写的很详细,我是做不到这样的,唯一有可能出问题的地方就是xpath可能出错,本着严谨的原则,我们运行一下试试看。

不出意外出意外了,报错了。 

 

 AttributeError: 'WebDriver' object has no attribute 'find_element_by_xpath',这个错误是因为版本的原因,新的Selenium已经不用这种格式了,我们稍稍修改下代码试试:

from selenium import webdriver
from selenium.webdriver.common.by import By

# 打开chrome浏览器
driver = webdriver.Chrome()
# 打开百度贴吧
driver.get('https://tieba.baidu.com/')
# 等待页面加载完成
driver.implicitly_wait(10)
# 找到广告iframe并切换到它
iframe = driver.find_element(By.XPATH,'//iframe[@class="iframe_wrapper"]')
driver.switch_to.frame(iframe)
# 找到第一个广告并点击
ad = driver.find_element(By.XPATH,'//div[@class="ad-list"]//a')
ad.click()

可以看出我们导入新的方法,改变了一些语法,运行之后果然又出错了

 这次应该是XPATH错了,不管了,由此可以看出人工智能生成的代码还是需要不断完善的。

三、进一步提出需求

 如果我们发现人工智能给出的答案并不是我们需要的,或者说答案我们不满意,我们可以继续提出需求,比如上面的例子,我觉得写的不好,我们可以让它重新回答,点击这里的重新生成就行。

 

 下面是重新生成的回答:

 对于这个问题,我需要先了解一下您的具体需求和情况。如果您是在使用selenium模拟浏览器行为,可以按照以下步骤实现:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 初始化浏览器
driver = webdriver.Chrome()
driver.maximize_window()  # 最大化浏览器窗口

# 打开百度贴吧
driver.get("https://tieba.baidu.com/")

# 等待广告出现
wait = WebDriverWait(driver, 10)
ad_element = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'ad_item')))

# 点击第一个广告
ad_element.click()

# 关闭浏览器
driver.quit()

上述代码中,我们使用了selenium库的WebDriverWait类来等待页面中的广告按钮元素(ad_item),并使用click()方法实现点击第一个广告。最后,我们使用quit()方法关闭浏览器。

需要注意的是,如果您要在生产环境中使用自动化程序,需要先确认这样的自动化操作是否符合相关网站的服务条款。此外,代码中的选择器可能需要根据实际情况做出相应的调整。

 肉眼可见,第二次的代码和第一次的由很大的差别,我们也来运行一下,同样报错了。

 

 我们可以用人工智能来查询是什么错误,我们提出问题:“ File "D:/Users/Administrator/PycharmProjects/pythonProject/venv/爬虫/AI.py", line 15, in <module>
    ad_element = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'ad_item')))是什么错误”,人工智能给出了回答

 

 人工智能是这样回答的:“

这个错误是代表你的Python代码在运行时在第15行处出现了问题。具体来说,这个错误表示在等待过程中,WebDriver无法找到指定的元素。

根据代码可知,在第15行,你正在使用Selenium的wait方法来等待页面上的广告元素的加载。如果页面上没有这个元素,那么就会出现这个错误。因此,你需要检查一下页面是否加载成功,是否存在名为'ad_item'的元素。

 其实还是定位错误,我们发现人工智能用的是selenium库的方法,而且两次都是用的这个方法,我们的小白笔记用的是requests方法,那么我可不可以提出需求,让人工智能使用requests方法来实现呢,答案是必须可以。人工只能之所以叫人工智能,而不是百度或者谷歌,就是因为它不是简单的输入查询,它可以向日常生活跟别人一样正常对话,这时我们就好像甲方,现在我们跟乙方的程序员提需求了:请使用requests方法来实现。

 

 不知是不是我们提问的不够准确,人工智能并没有按照我们之前的提问给出针对性回答,它好像是详细介绍了requests方法,我们再调整一下提问方式。我们重新提问:“请用python代码编写代码,实现找到百度贴吧的广告子页面,点击第一个广告”,后我们继续提问:“请使用requests方法来实现我刚刚提出的问题”,这次给出了靠谱的答案。

 

 好的,以下是使用requests方法实现获取百度搜索结果的示例代码:

import requests

query = "python"  # 搜索关键词
url = f"http://www.baidu.com/s?wd={query}"
response = requests.get(url)

if response.status_code == 200:
    # 解析响应内容,获取所有搜索结果的标题和链接
    search_results = []
    for item in response.html.find(".t a"):
        title = item.text
        href = item.attrs['href']
        if href.startswith("http"):
            search_results.append((title, href))
    
    # 打印搜索结果
    for i, result in enumerate(search_results):
        print(f"{i+1}. {result[0]}")
        print(f"   {result[1]}")
else:
    print("获取搜索结果失败")

 这个示例代码使用requests库向百度发送了一个搜索“python”的请求,然后解析响应内容,获取了所有搜索结果的标题和链接,最后打印出来。注意:这里还使用了一个第三方库pyquery来解析html。如果你没有安装这个库,可以使用pip命令来安装(pip install pyquery)。

 问题不大,但是估计运行还是错误的,就不演示了。

总结 

 下面再用人工智能写一首诗,看看我们的人工智能多么的伟大。

人工智能,妙用无穷
改变生活,越来越明显
智能家居,一切方便
智能安防,保家更稳

机器翻译,语言不难
智能客服,疑问都能解
自动驾驶,路上畅通
医疗辅助,疾病更防

智慧城市,交通更快
智能教育,学习更好
智能制造,生产更高效
人工智能,创新不停

科技进步,人类向前
人工智能,方向正确
未来美好,更多期待
智慧生活,还需努力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/844046.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaScript 一段代码快速入门

仅记录了和c有所不同之处&#xff0c;其余类似。 一段简单代码 // 关注点分离&#xff0c;指html页面设计和javascript页面行为分离// 对象&#xff0c;键值对形式 const user {name: "gyf",age: 20,jobs: ["front-end", "engineer", 2, true…

Syncfusion Essential Edit for WPF Crack

Syncfusion Essential Edit for WPF Crack 在任何WPF应用程序中启用语法高亮显示。 Syncfusion Essential Edit for WPF是一款具有所有基本功能的编辑器&#xff0c;如文本编辑、剪切、复制和粘贴。它允许用户从各种文件格式打开文件并将其保存为各种文件格式。Syncfusion Esse…

字符串的匹配算法【学习算法】

字符串的匹配算法【学习算法】 前言版权推荐字符串的模式匹配BF模式匹配算法KMP模式匹配算法 Java中实现算法官方题解调用Java的API参考Java的APIBF算法KMP算法 C中实现算法KMP算法 最后 前言 2023-8-6 12:06:42 以下内容源自《【学习算法】》 仅供学习交流使用 版权 禁止其…

UDS服务基础篇之31

UDS服务基础篇之31服务 前言 正如前文《UDS基础之2F服务》所说的2F服务与今天本文要将的31服务存在着有些相似之处&#xff0c;因此需要针对31服务本身进行较为细致的剖析&#xff0c;在此小T抛出如下几个基本问题供大家思考&#xff1a; 你知道31服务是干什么的吗&#xff…

K8S系列文章之 内外网如何互相访问

K8S中网络这块主要考虑 如何访问外部网络以及外部如何访问内部网络 访问外网服务的两种方式 需求 k8s集群内的pod需要访问mysql&#xff0c;由于mysql的性质&#xff0c;不适合部署在k8s集群内,故k8s集群内的应用需要链接mysql时&#xff0c;需要配置链接外网的mysql,本次测试…

35岁焦虑:体能下滑,新陈代谢变慢,还是我们的日常行为?

35岁焦虑&#xff1a;体能下滑&#xff0c;新陈代谢变慢&#xff0c;还是我们的日常行为&#xff1f; &#x1f607;博主简介&#xff1a;我是一名正在攻读研究生学位的人工智能专业学生&#xff0c;我可以为计算机、人工智能相关本科生和研究生提供排忧解惑的服务。如果您有任…

python的下载和安装步骤,python下载安装教程3.10.0

大家好&#xff0c;给大家分享一下python下载安装教程3.10.0&#xff0c;很多人还不知道这一点。下面详细解释一下。现在让我们来看看&#xff01; 第一步&#xff1a;下载Python安装包 在Python的官网 www.python.org 中找到最新版本的Python安装包&#xff0c;点击进行下载&a…

了解HTTP代理日志:解读请求流量和响应信息

嗨&#xff0c;爬虫程序员们&#xff01;你们是否在了解爬虫发送的请求流量和接收的响应信息上有过困扰&#xff1f;今天&#xff0c;我们一起来了解一下。 首先&#xff0c;我们需要理解HTTP代理日志的基本结构和内容。HTTP代理日志是对爬虫发送的请求和接收的响应进行记录的文…

坐标转换-使用geotools读取和转换地理空间表的坐标系(sqlserver、postgresql)

前言&#xff1a; 业务上通过GIS软件将空间数据导入到数据库时&#xff0c;因为不同的数据来源和软件设置&#xff0c;可能导入到数据库的空间表坐标系是各种各样的。 如果要把数据库空间表发布到geoserver并且统一坐标系&#xff0c;只是在geoserver单纯的设置坐标系只是改了…

听别人说学习机器人哪个方向合适不重要-自己想做什么最重要

2023年7-8月暑期档有一部火热的电影《封神之朝歌风云》 姬昌那句「你是谁的儿子不重要&#xff0c;你是谁才重要」 年轻人要勇于突破权威强加于自身的桎楛&#xff0c;要独立思考&#xff0c;果敢刚毅。 唯有如此才能摆脱工具人的宿命。 AI&#xff1a; 电影《封神之朝歌风云…

IDEA项目实践——Spring框架简介,以及IOC注解

系列文章目录 IDEA创建项目的操作步骤以及在虚拟机里面创建Scala的项目简单介绍 IDEA项目实践——创建Java项目以及创建Maven项目案例、使用数据库连接池创建项目简介 IDEWA项目实践——mybatis的一些基本原理以及案例 IDEA项目实践——动态SQL、关系映射、注解开发 文章目…

前端js--旋转幻灯片

效果图 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><link rel"stylesheet" href"…

python打印oracle19c版本号

Author: liukai 2810248865qq.com Date: 2022-08-18 04:28:52 LastEditors: tkhywang 2810248865qq.com LastEditTime: 2023-07-08 08:58:24 FilePath: \PythonProject01\&#xfffd;&#xfffd;ӡoracle&#xfffd;&#xfffd;&#xfffd;ݿ&#xfffd;汾&#xfffd;&a…

《孙子兵法》是世界上最著名的中国著作,不服来看,趣讲《孙子兵法》第1讲

《孙子兵法》是世界上最著名的中国著作&#xff0c;不服来看&#xff01;趣讲《孙子兵法》【第1讲】 世界上最有名的中国著作肯定是《孙子兵法》。在著名的美国西点军校是必修课。 在企业管理领域&#xff0c;听一些讲座&#xff0c;经常会引用到《孙子兵法》的一些名句&#…

手把手教你用idea实现Java连接MySQL数据库

目录 1.下载MySQL 2.下载mysql 的jdbc驱动 3.将驱动jar包导入idea 4.通过Java测试数据库是否连接成功 1.下载MySQL 首先如果没有mysql的需要先下载MySQL&#xff0c;可以看这个教程 MYSQL安装手把手&#xff08;亲测好用&#xff09;_程序小象的博客-CSDN博客 2.下载mysql…

IDEA Run SpringBoot程序步骤原理

这个文章不是高深的原理文章&#xff0c;仅仅是接手一个外部提供的阉割版代码遇到过的一个坑&#xff0c;后来解决了&#xff0c;记录一下。 1、IDEA Run 一个SpringBoot一直失败&#xff0c;提示找不到类&#xff0c;但是maven install成功&#xff0c;并且java -jar能成功ru…

红帽8.2版本CSA题库:第三题调试 SELinux

semanage port -a -t http_port_t -p tcp 82 semanage fcontext -m -t httpd_sys_content_t /var/www/html/file1 //必须先做这步再做restorecon restorecon -Rv /var/www/html firewall-cmd --permanent --add-port82/tcp firewall-cmd --reload systemctl enable --now htt…

Fiddler无法抓包怎么解决?这些配置项你需要检查。尤其是最后一项。

有时候&#xff0c;我们的fiddler启动是正常的&#xff0c;但是就是抓不到包&#xff0c;原因有很多。但多数情况都是因为配置不正确&#xff0c;接下来我们就看下有哪些导致fiddler抓不到的设置 。 1 是否配置代理服务器 一般情况下此设置会自动配置&#xff0c;但是如果抓不…

C++拷贝wstring到wchar_t*中踩的坑

使用wchar_t指针将wstring中的数据拿出来&#xff0c;发现释放的时候异常&#xff0c;不是深拷贝和浅拷贝的问题 首先先看看string怎末复制到char中&#xff0c;代码如下 string str1"\"0.2.0\"";char* tnew char[str.size()1];memcpy(t, str1.c_str(), s…

BigDecimal 金额判断大于0、等于0、小于0 方法

方法的使用: BigDecimal.compareTo(BigDecimal.ZERO) public static void main(String[] args) {BigDecimal b1 new BigDecimal(0.01);System.out.println(b1.compareTo(BigDecimal.ZERO)); // 输出 1BigDecimal b2 new BigDecimal(0.00);System.out.println(b2.compareTo(B…