【智控万物】DF论坛点赞亮灯

2021-01-292.1万
AI 快速预览详细 收起
本项目演示了如何在Mind+中使用Python模式,通过BeautifulSoup库抓取DF论坛帖子的点赞信息,并控制小彩灯亮起。项目中使用了requests库进行网页请求,BeautifulSoup库解析HTML内容,PinPong库控制OLED显示和NeoPixel灯带。解决了OLED显示中文的问题,并意外发现了刷浏览量的问题。


【智控万物】DF论坛点赞亮灯图3

【项目介绍】
本项目,是用来演示“BeautifulSoup”库抓取网页信息的。当有人为我的帖子点赞时,我的小彩灯,就亮起。

在程序运行过程中,发现两个问题:1、程序实现了刷DF论坛帖子的浏览量(我不是故意的,技术员尽快解决吧)2、“PinPong”库使用Oled12864显示中文时出现问题。以上两个问题有待解决。

【Mind+加载库】
Mind+中Python模式下,加载“爬虫”:“requests”和“BeautifulSoup”库。
【智控万物】DF论坛点赞亮灯图2

【程序代码】

from bs4 import BeautifulSoup
import re
import requests

import time
from pinpong.board import Board,NeoPixel,Pin
from pinpong.libs.dfrobot_ssd1306 import SSD1306_I2C #导入ssd1306库
Board("uno").begin()               #初始化,选择板型(uno、leonardo、xugu)和端口号,不输入端口号则进行自动识别
#Board("uno","COM36").begin()      #windows下指定端口初始化
#Board("uno","/dev/ttyACM0").begin() #linux下指定端口初始化
#Board("uno","/dev/cu.usbmodem14101").begin()   #mac下指定端口初始化

oled=SSD1306_I2C(width=128, height=64) #初始化屏幕,传入屏幕像素点数
NEOPIXEL_PIN = Pin(Pin.D9)
PIXELS_NUM = 7 #灯数

np = NeoPixel(NEOPIXEL_PIN,PIXELS_NUM)
html='https://mc.dfrobot.com.cn/thread-308261-1-1.html'
pl_num=0
while(1):
  res = requests.get(html)
  res.encoding = 'utf-8'
  bs = BeautifulSoup(res.text,"html.parser")
  pl_list=bs.find_all(id=re.compile("postmessage_"))
  pl_len=len(pl_list)
  if pl_len-1>pl_num:#判断是否有新评论
    #print(pl_len)
    for i in range(pl_num+1,pl_len):#"pl_num+1"排除掉作者的帖子内容
     #print(pl_list)
     bs2 = BeautifulSoup(str(pl_list),"html.parser")
     if bs2.td.text.find("赞")!=-1:#查询评论的文字中是否有“赞”字
      print(bs2.td.text)
      temstr=bs2.td.text.strip("\r")#去除结尾处的“\r”,不然OLED显示会出错:eyError:'\r'
      temstr=temstr.strip("\n")     #去除结尾处的“\n”,不然OLED显示会出错:eyError:'\n'
      #因暂时编译有错误,不显示中文,暂时用以下英文“点赞”代替
      oled.text("like it",8,8)
      #oled.text(temstr,0,0) #指定位置显示文字,
      oled.show()  #显示生效
      for j in range(7):#7灯亮红
          np[j]=(255,0,0)
    pl_num=pl_len-1 #个数当中包含一个非评论
    time.sleep(3)   #3秒查看帖子一次
    oled.fill(0) #全部填充熄灭,清屏
    oled.show() #显示生效
    for j in range(7):#7灯熄灭
        np[j]=(0,0,0)

程序中用识别评论中的“”字为代表,评论点赞。可以丰富些,使用一个列表将美言美句,夸奖赞美之词全包括。“有表扬就高兴”亮灯
【问题1】
显示英文没有问题:oled.text("Hello PinPong",8,8)
但显示中文,会出现,显示找不到"fons_msyh.ttf.json"
【智控万物】DF论坛点赞亮灯图1
【问题2】几分钟就涨到1000多,呼叫技术员,过一会就上万了。

【智控万物】DF论坛点赞亮灯图4
【演示视频】

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(6)
gray6666
gray6666
盖楼,赞一下
rzegkly
rzegkly
点赞亮灯,一起试试
云天
云天
作者
回复rzegkly
不知技术人员解决,刷浏览量的问题没有?
KIKI
KIKI
我来试试
云天
云天
作者
自己赞一下:赞赞,非常不错!(测试用)
云天
云天
作者
自己赞一下:赞赞,非常不错!(测试用)
云天
云天
作者
自己说,非常不错!(测试用)
- 没有更多了 -