机器人教学实战第一篇: 世博NFT机器人(又名:兔子铃铛)
0x6893
April 9th, 2022

Discord社区正在建设中, 以后此类文章将首发在Discord.

今天刘社长世博NFT机器人起了非常可爱的名字叫兔子铃铛.

代码开源地址:

代码完全开源, 但是想要了解世博机器人如何设计, 如何开发的,请看此文章.

在开发这个机器人的那天晚上, 一位推特网友提醒了我, 我才动手去开发.

从构思到开发完成,很快,不到2个小时.

因为足够简单,所以就作为教学实战的第一篇给大家来入门吧.


第一步: 设计

流程图如下:

  1. 取网页数据
  2. 拿到取得的数据去数据里查询
  3. 如果发现数据库中没有网页上的新数据, 说明是新的, 所以就可以发推送
  4. 然后要把新的数据保存在数据库中, 以免第二次再发.
  5. 休息30秒后,从头再来.

第二步: 技术调研

使用语言: Python 3.X

使用Python 第三方类库: requests, BeautifulSoup, sqlalchemy, tweepy

  • Requests是一个基于Apache2协议开源的Python HTTP库。
  • Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据。
  • 提供了SQL工具包及对象关系映射(ORM)工具
  • Tweepy是Twitter官方提供的Python第三方开发库,简单好用易学高效。

第三步: 实战

有了这些技术就足够了.

根据设计流程图, 首先去 expo.chikoroko.art 取网页数据.

功能一:

先要使用Requests 做个HTTP请求

url = 'https://expo.chikoroko.art/'
res = requests.get(f"https://expo.chikoroko.art/", headers={'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36"})

print(res.text)

执行一下, 就能看到取得到了html代码.

功能二:

接下来要使用Beautiful Soup 取找这个按钮Collect now for free .

如何找呢?

使用浏览器的开发者工具, 在想要找的元素上点击鼠标右键 点击 检查 按钮

就很容易找到这个按钮的代码了

分析一下这个按钮是使用的span 标签, 并且class 是 text-wrapper button-text

我们试着用代码找一下

因为有多个这样的按钮,所以使用了for 语句

运行结果如下:

发现了两个**Collect now for free ->**按钮

这里需要保存状态, 才能判断出是否是新的.

接下来有两种方案,保存我们的状态.

  1. 保存Cookie, 只要出现Collect now for free 按钮, 就代表有新的.
  2. 保存每个nft名到数据库, 只要数据库中没有新的nft名就代表有新的.

我这里选择了第二种, 以后再讲解第一种.

这里给大家留个作业: 请根据上面的方法, 找到nft名字.

功能四: 设计数据库

数据库非常简单, 两个字段(其实一个字段也够了)

表名:chikoroko

  • id :自增型
  • name: 保存nft名字

找到名字自后保存到这个name中就可以了.

功能五: sqlalchemy 的使用

  1. 红色框内的代码是导入要使用的库
  2. 橙色框内的代码是连接数据库以及初始化Session
  3. 定义和数据库中和表一一对应的Class

然后和刚才的代码放在一起, 在再最后取得nft名之后把nft名字保存在数据库中.

执行结果:

再看数据库中的数据:

已经保存成功了!!

功能六: 发送推送

以发送推特为主:

分二步:

  1. 引入
  2. 初始化

推特key的话, 填写你们自己的.

只有申请了推特开发者,才有这个key. 申请不到可以想办法买.

发送推特的功能使用以下代码:

api.update_status(message)

最后一步:

参考我提供的代码, 设置好你自己的推特key, 连接上数据库, 就可以运行了, 如果有任何问题,群里讨论


如果你觉得对你有用

请关注我的mirror: https://mirror.xyz/zlexdl.eth

和关注我的推特:https://twitter.com/zlexdl

我的Notion地址:https://zlexdl.notion.site/f4aa875aa7be4ccca3918a783c499959

Arweave TX
6Cncfymez0k5jmWB2kAXH3ZZ-hvJAQXSFo5our6-Ipc
Ethereum Address
0x68934c69245CBE6E157859D23Fc6766c59ED28F9
Content Digest
ER8CLr6tCcz_hE9rqrvcFW_5uEarNRjw4rnRtGd2Slo