限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

AI 帮写爬虫,真的吗? Amazon Q:当然!

  • 2023-12-07
    北京
  • 本文字数:3680 字

    阅读完需:约 12 分钟

大小:1.48M时长:08:38
AI 帮写爬虫,真的吗? Amazon Q:当然!

2023 年技术圈什么最火?答案毫无疑问是 AIGC,伴随该项技术的发展,新的编程方式也出现了,那就是用 AI 辅助编程,有了 AI 的加持,开发人员的效率和生产力可以得到大幅度的提升。今天我们就介绍一款非常棒的人工智能编程工具 Amazon CodeWhisperer , 相信我,用上他之后,你的工作效率至少能翻一倍。



  1. 在日常的编码工作中,你是否会碰到如下难题?

  2. 接触了一款全新的 Python 模块,不知道如何开启 hello world;

  3. 模块的某个方法,忘记了参数和返回值,反复切换手册会打断思路;

  4. 不想写注释;

  5. 写了一段代码,但是并不健壮,担心有难以发现的漏洞;

  6. ……


如果你正在被这些问题困扰,那 Amazon CodeWhisperer 能非常好的解决上述问题。

下面跟随我的脚步,开启 CodeWhisperer 的实践吧!

CodeWhisperer 初始化


CodeWhisperer 支持的 IDE 包括 Visual Studio(VS)Code(本篇博客使用的 IDE) 和 JetBrains IDE(IntelliJ、PyCharm、CLion、GoLand、WebStorm、Rider、PhpStorm、RubyMine 和 DataGrip),安装过程只需要几分钟,这里我们不详细展开讲解,大家可以参考 官方文档 ,官方还贴心的准备的视频教程~


本篇博客我们使用 VSCode 完成一个爬虫项目实践,可以直接在 VSCode 插件中检索【CodeWhisperer】,直接安装即可(已经有将近 200W 的安装量啦,要抓紧跟上大家的节奏),安装完毕,在 VSCode 侧边栏中会出现 CodeWhisperer 插件图标,如下所示。



初始化过程中最重要的就是账号的链接,点击上图【Connect to ……】链接,之后按照步骤登录账号,一系列的操作之后,浏览器出现下图绿色状态提示界面,此时账号对接已经完成。



返回到 VSCode 中,会发现 Amazon CodeWhisperper 帮助手册已经打开,建议阅读一下 ,里面已经整理了插件的基础使用说明。



与此同时,VSCode 左下角开发者工具(DEVELOPER TOOLS)也已经显示链接到 Builder ID。至此,我们的前置工作已经全部完成,下面可以开始进行工具使用。



CodeWhisperper 使用

简单逻辑示例


CodeWhisperer 插件安装完毕,默认会开启 Auto-Suggesions(自动建议模式),此时当我们在编写注释或代码之后,CodeWhisperer 会自动给我们提供代码提示,这个过程就像超强版的语法提示,如果你还没有安装好插件,可以先看一下动图,整体感受一下。



CodeWhisperer 的代码提示,在 VSCode 中可以使用左右方向键进行选择,使用 Tab 进行确认,其他按键表示不采纳提示代码。初次体验下来,正如插件名称(Whisperer:低语者)所描述的一样,就像是编辑器在轻轻的和我们说着即将要敲入的代码,如果同意,可以一键采纳,不同意,直接忽略即可。

代码翻译示例


拥有此功能之后,很多简单的程序完全可以基于智能提示编写完毕,但这肯定不够,我们需要 CodeWhisperer 完成更有挑战的事情,在 Python 爬虫领域,经常需要将一段前端 JS 代码用 Python 重新实现。


下面提供一段 JavaScript 中生成 UUID 的代码,然后用 Python 复写。


 p = function(e) {  var t = e || null;  return null == t && (t = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (function(e) {      var t = 16 * Math.random() | 0;      return ("x" === e ? t : 3 & t | 8).toString(16)  }  ))),
复制代码


在 VSCode 中直接输入你的需求,然后 CodeWhisperper 会给我们一个完整的实现示例,可以看到代码重写完全正确。



加密函数示例


除了翻译代码外,在编写爬虫案例的时候,如果你对某些加密函数使用详情有遗忘,可以让 CodeWhisperer 直接给出示例,快速唤醒自己的记忆。

下图为输入注释 # 使用 Python 实现 hmac_sha256 加密函数 获取函数的使用示例代码。



如果在使用 CodeWhisperer 的过程中按错按键,即没有使用 Tab 确认代码,可以随时按下快捷键 Alt+C,CodeWhisperer 代码提示会再次出现,又可以继续加速你的开发效率了。

混合加密示例


如果将上述逻辑都定义为单逻辑,那下述需求就是一个复合逻辑示例了,在实际编码中,会碰到需要将两种加密混合使用的情况,需求如下:

使用 Python 实现 Base64 + AES 加密字符串


在 IDE 中输入上述注释信息,然后回车,CodeWhisperer 就会自动生成后续代码,其中部分逻辑可以一次性完成,效果如下,其中在核心逻辑部分,CodeWhisperer 表现非常优秀,答案秒输出,并且直接可用。



算法模板示例


在业务逻辑的编写过程中,有时会用到常见算法,例如快排、堆排、哈希等,这些算法很多都类似模板代码,在编写的时候,如果可以一键生成,能大幅度提高代码编写速度,包括算法改写速度,在 CodeWhisperer 中,可以通过注释快速生成。

使用 Python 生成快排代码



体验 5 个示例之后,CodeWhisperer 的使用非常简单,而且无需切换编辑窗口,在 IDE 的代码文件中直接完成了 AIGC 的问答流程,响应速度非常快,代码准确性很高。


单独的案例对 CodeWhisperer 已经没有难度了,接下来我们尝试完成一个完整的 Python 爬虫案例(咱们看一下只写注释,能不能完成一个合格的爬虫采集程序)。

CodeWhisperer 项目实战


目标采集站点为作者博客,无侵权问题。

编写爬虫基础框架注释,包含如下内容:

  1. 程序使用的采集模块

  2. 目标采集站点地址

  3. 采集的目标标签

  4. 数据存储到文件

  5. 发送采集到的数据到指定邮箱

第一步:输入如下注释,获取网页响应内容


使用 Python requests 模块采集 https://blog.csdn.net/hihell?type=blog


# 使用 Python requests 模块采集 https://blog.csdn.net/hihell?type=blog
import requests
url = 'https://blog.csdn.net/hihell?type=blog'
headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36' }response = requests.get(url, headers=headers)
print(response.text)
复制代码


写完注释,直接回车之后,CodeWhisperer 直接给我们生成了对应的代码,过程中只需要按下 回车和 Tab 键即可。


如果你觉得上述代码有些简单,可以在代码基础上继续完善,例如将请求头进行完善,增加 referer 和 host 参数,直接在需要修改的位置添加注释即可。


bc2cec9e458845859e9c407965d14bf5.gif


第二步:编写目标数据采集函数


这一步,我们要使用 lxml 模块中的 etree 提取目标标签,继续将我们的逻辑输入到注释注释中,然后回车。

使用 etree 模块提取网页响应中所有的 article 标签


# 使用 etree 模块提取网页响应中所有的 article 标签
from lxml import etree
html = etree.HTML(response.text)
article_tags = html.xpath('//article')
print(article_tags)
复制代码


此时目标博客标签已经被初步提取,下面要将标题和超链接地址进行再次提取,这里的注释需要尽可能编写清晰,如果你对 Python 爬虫技术栈有一定了解,到这里就会发现 CodeWhisperer 对代码编写提速效果。


# 循环 article_tags 提取其内部的超链接标签的 href 属性和 h4 标签文本# 注意标签结构是 超链接 a 标签含后代 h4 标签for article in article_tags:    href = article.xpath('./a/@href')[0]    title = article.xpath('./a//h4/text()')[0]    print(href, title)
复制代码

第三步:数据存入到 csv 文件中


写入文件的逻辑属于常见操作,直接输入函数需求,相信 CodeWhisperer 会直接生成的,输入的参考注释如下:

编写一个 csv 文件写入函数,其包含 2 个参数,分别是 title 和 href


# 编写一个 csv 文件写入函数,其包含 2 个参数,分别是 title 和 href
def write_to_csv(title, href): with open('codewhisperper_demo.csv', 'a', encoding='utf-8') as f: f.write(title + ',' + href + '\n')
复制代码

write_to_csv() 函数调用放到上述循环中即可完成本步骤。再次运行代码,在爬虫目录会生成对应的文件,打开文件得到目标数据,效果图如下所示。


image.png


这里一个简单的爬虫写完了,但是我们的工作还没有完成,要继续优化这个程序。

第四步:将采集到的数据,发送到 163 邮箱


输入注释:# 编写一个邮件发送函数,将刚刚生成的文件 codewhisperper_demo.csv 发送到指定邮箱,CodeWhisperer 瞬间就会帮助我们生成一个参考函数,实际效果如下图所示。


bc2cec9e458845859e9c407965d14bf5.gif


将上述代码中的账号和密码修改为自己真实数据,即可实现一键发送邮件。

打开收件箱,可以看到刚刚的邮件已经发送成功,CodeWhisperer 给我们提供了一种邮件发送的实现,你可以再其基础上进行改造,以满足个性化的需求。


image.png


CodeWhisperer 使用总结


在博客开篇,我提出了编码过程中几个比较头疼的问题,尤其是第二个,程序员在编码过程中总是切出去查找代码示例和文档手册,从而打断编码思路,而 CodeWhisperer 非常完美的解决了该问题,在编码的过程中,Amazon CodeWhisperer 自动提供编码建议,同意就使用,不同意就舍弃,真正实现了沉浸式编程。


除此之外,CodeWhisperer 还可以基于代码和注释生成新的业务代码,尤其当我们 Python 工程师接触一个新的模块时,他可以快速的产出示例代码,而且生成的代码与我们编码风格非常相似,甚至编码风格和命名规则都可以完美学习到。在编码代码过程中,CodeWhisperer 还会自动为我们的代码提供注释参考,让我们将更多精力投入到业务逻辑中。


将 CodeWhisperer 用起来吧,几分钟之后,你就会深刻的感受到编码效率的提升!


2023-12-07 11:3811053

评论 1 条评论

发布
用户头像
计算器帮数钱,真的吗?
2023-12-07 14:10 · 北京
回复
没有更多了
发现更多内容

【JS】预编译

德育处主任

JavaScript 大前端 js 28天写作

个人隐私后续

张老蔫

28天写作

HTTPS实现原理

架构精进之路

https 七日更 28天写作

云算力挖矿系统开发app,矿机租赁交易平台搭建

v16629866266

低代码:Microsoft Power Platform

lidaobing

低代码 28天写作 Power Platform

java中的类和object,其实没那么难~

田维常

类集

碎碎念之「程序员的时间都花在了哪?」

Justin

设计原则 代码规范 28天写作 技术债

“大禹针”在北江大堤上线,浪潮助力广东水利新基建落地

新基建

大数据丨ClickHouse在京东能源管理平台的实践

京东科技开发者

数据库 大数据

Serverless Kubernetes:理想,现实与未来

阿里巴巴云原生

Serverless 容器 运维 云原生 k8s

15道类和对象面试题,快看看自己会几道

田维常

类集

Invalid bound statement (not found)

任广印

Java MyBatisPlus

西少爷肉夹馍的股权纠纷 | 视频号28天(22)

赵新龙

28天写作

个人web分享92道JavaScript面试题附加回答

我是哪吒

程序员 面试 大前端 程序媛

LiteOS调测利器:backtrace函数原理知多少

华为云开发者联盟

架构 内存 函数 LiteOS backtrace

企业级低代码平台的选型和建设思考

李小腾

重温亮剑-感悟

superman

宅米网技术架构演进分析

Andy

666666666666666666666

Paul

大数据

凝聚人心并不难,小诀窍让团队跟你一条心

一笑

管理 激励 28天写作

扎根CNCF社区贡献五年是怎样的体验?听听华为云原生开源团队的负责人怎么说

华为云开发者联盟

容器 Volcano cncf kubeedge 代码开发

音视频传输协议众多, 5G时代不同业务应该如何选择?

华为云开发者联盟

5G 音视频 直播 流媒体

一文带你解读Volcano架构设计与原理

华为云开发者联盟

架构 Kubernetes 负载 Volcano 集群

从设计模式理解Vue响应式(多图警告)

coolFish(呔呆)

JavaScript vue.js 响应式 大前端 设计模式

微服务转型系列1:农商行数字化转型的烦恼

BoCloud博云

微服务 银行数字化转型 API 服务治理

我的算法学习之路

熊斌

学习方法 算法 28天写作

技术赋能教育,浅谈教育机构转型的制胜关键

华为云开发者联盟

音视频 在线教育

太牛了!美团Android开发工程师岗位职能要求,大厂面试题汇总

欢喜学安卓

android 程序员 面试 移动开发

网站自动化任务脚本

Kylin

七日更

顺利拿到OPPO公司Android架构师offer,Android跨进程通信导论,全套教学资料

欢喜学安卓

android 程序员 面试 移动开发

阿里巴巴管理三板斧

Ian哥

28天写作

AI 帮写爬虫,真的吗? Amazon Q:当然!_亚马逊云科技_梦想橡皮擦_InfoQ精选文章