____________ 发表于 2022-7-2 21:06

python 怎么去除重复内容

本帖最后由 ____________ 于 2022-7-2 21:11 编辑

import json
import time
import requests
while True:
    url = requests.post("https://api.live.bilibili.com/ajax/msg?roomid=1406726")
    js = json.loads(url.text)
    j=js['data']['room']
    for i in j :
       print(i['nickname'] + "———————" + i['text'] + "———————" + i['timeline'])
       time.sleep(1)



想获取直播间聊天记录,但只能获取10个记录,如果没有人发言的话他又会重第一个记录开始获取,我只想获取最新的记录。如果没有新的记录就不打印出来,不知道怎么改写

grekevin 发表于 2022-7-2 21:06

下面代码是以发言时间为依据来判断是否已经打印

import json
import requests
import time

printed_content = set()

while True:
    url = requests.post("https://api.live.bilibili.com/ajax/msg?roomid=1406726")
    js = json.loads(url.text)
    j=js['data']['room']
    for i in j :
       if i['timeline'] not in printed_content:
             printed_content.add(i['timeline'])
             print(i['nickname'] + "———————" + i['text'] + "———————" + i['timeline'])
             time.sleep(1)

grekevin 发表于 2022-7-2 21:19

可以尝试利用集合特性来去重

萌新与小白 发表于 2022-7-2 21:25

我没研究它的接口。只是去重的话,写个判断就行
a = ['1', '2', '3']
b = ['4', '2', '3']
for i in b:
    if i not in a:
      print(i)
也可以定义成集合,再往集合中添加数据,因为集合中的数据是唯一的。
最后,你可以看看这里有没有更合适的接口https://github.com/SocialSisterYi/bilibili-API-collect

ccwuax 发表于 2022-7-2 21:26

你这个可以首先判断时间在哪个时间段以内,其次用in 或 not in 判断是否已经在列表内

kafei000 发表于 2022-7-2 22:38

根据时间来判断是否为新的评论就好了

天真Aro 发表于 2022-7-2 22:39

判断重复continue过滤            

luanshils 发表于 2022-7-3 02:35

set过滤重复


                                        藏起来的小尾巴,不让你看!

wanlinwo 发表于 2022-7-3 08:40

狐白本白 发表于 2022-7-3 09:02

把输出内容存入集合 然后每次判断是否在集合中存在 如果存在则跳过 未存在则存入并输出
页: [1] 2
查看完整版本: python 怎么去除重复内容