写点什么

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:3810782

评论 1 条评论

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

neo4j 批量 导入 数据 的 几种方式

wkq2786130

neo4j

写在《SRE生存指南》出版之际

冯文辉

DevOps SRE

架构师训练营第七课总结

曾祥斌

jvm-config

wkq2786130

Java JVM

百万并发「零拷贝」技术系列之初探门径

码农神说

Java 架构 零拷贝

前后端统一结果集封装

Peision

Java json 前后端分离 springboot

前后端分离跨域问题解决方案

Peision

Java 前后端分离 springboot

neo4j load csv 使用

wkq2786130

Neo4j APOC 使用

wkq2786130

neo4j apoc

jqGrid表格封装和使用方法

Seven_xw1213

Java 大前端 封装 jqgrid

专访英特尔唐炯:对旗下产品性能及未来路线图充满信心

最新动态

职业吐槽与反思(一)

石君

职场 吐槽

vcenter 5.5故障处理

小小文

vcenter

canal 笔记

wkq2786130

MySQL canal

架构师训练营第七周作业

王铭铭

JVM性能调优监控工具 jps jstat jinfo jmap jhat jstack

wkq2786130

Java JVM

GoF设计模式 | 单例模式

Peision

Java 后端 23种设计模式

Java的异常处理

Bruce Duan

java异常处理

为什么 Flink 无法实时写入 MySQL?

Apache Flink

flink

手撕设计模式

Peision

Java 后端 设计模式 23种设计模式

蚂蚁金服上市了,我不想努力了

YourBatman

IPO 财务自由 蚂蚁金服 财富自由

C++ 线程安全的单例模式总结

小林coding

c++ 设计模式 单例模式 线程安全

玩转混合加密 | 精美配图

阿宝哥

安全 加密解密 数据加密

一张PDF了解JDK11 GC调优秘籍-附PDF下载

程序那些事

Java jdk GC 秘籍 JDK11

解决 Harbor 启动失败故障

FeiLong

Docker Harbor Docker-compose

OrientDB etl 工具 导入 rdbms数据

wkq2786130

Cmder 使用 笔记

wkq2786130

cmder tools

elasticsearch-restful-api笔记

wkq2786130

elasticsearch

性能优化-架构师体现技术全面性的时刻

LEAF

GoF设计模式 | 工厂方法模式

Peision

Java 23种设计模式

创业使人成长系列 (5)-申请国家高新企业

石云升

高新企业

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