8328| 7
|
[项目分享] 【智控万物】DF论坛点赞亮灯 |
本帖最后由 云天 于 2021-1-29 17:05 编辑 【项目介绍】 本项目,是用来演示“BeautifulSoup”库抓取网页信息的。当有人为我的帖子点赞时,我的小彩灯,就亮起。 在程序运行过程中,发现两个问题:1、程序实现了刷DF论坛帖子的浏览量(我不是故意的,技术员尽快解决吧)2、“PinPong”库使用Oled12864显示中文时出现问题。以上两个问题有待解决。 【Mind+加载库】 Mind+中Python模式下,加载“爬虫”:“requests”和“BeautifulSoup”库。 【程序代码】 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" 【问题2】几分钟就涨到1000多,呼叫技术员,过一会就上万了。 【演示视频】 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed