Python获取观众数据

Python爬虫原理写的一个简单获取观众数据的代码,用tkinter做了个简单的GUI界面,然后用pyinstaller编译为exe可执行文件,有需要的可以根据自己需求修改.

from tkinter import *
import urllib.request
import tkinter.messagebox
from lxml import etree
import json
import time
import re
root=Tk()
root.title("获取氧吧直播间观众数据")
Label(root,text="请输入直播间号码").grid(row=0,column=0,sticky=W)
v1=StringVar()
e1=Entry(root,textvariable=v1,width=30,)
e1.grid(row=0,column=0,padx=105,pady=5,sticky=W)
sb=Scrollbar(root,orient=VERTICAL)
sb.grid(row=1,column=1,columnspan=3,padx=0,pady=5,sticky=NS)
lb = Listbox(root,width=68,height=41,yscrollcommand=sb.set,setgrid=True,selectmode=EXTENDED)
lb.grid(row=1,column=0,padx=5,pady=5,columnspan=5,sticky=W)
sb.config(command=lb.yview)
root.geometry("8x41+750+100")
def getUsertList():
    txt=v1.get()
    if not txt.isdigit():
        tkinter.messagebox.showinfo("请输入","请输入房间号")
    else:
        url = 'http://yangba.syoogame.com/%s' % (v1.get())
        r = urllib.request.urlopen(url)
        htmlData = r.read()
        html = etree.HTML(htmlData)
        nickname = html.xpath('//head/title/text()')
        content = html.xpath('//script/text()')
        p = r'[0-9]{1,9}'
        pid = re.findall(p, content[2])
        nowtime = time.time()
        nowtime = int(nowtime)
        listurl = 'http://yangba.syoogame.com/studio/ajax/getUserList?id=%s&_=%s' % (pid[0], nowtime)
        userData = urllib.request.urlopen(listurl)
        userList = userData.read()
        jsonData = json.loads(userList.decode('utf-8'))
        lb.insert(END, "======================================",
            nickname[0],
            "======================================",
            "观众总数:%s"%(jsonData['total']),
            "游客总数:%s"%jsonData['visitor'],
            "在线守护:%s"%jsonData['guardOnline'],
            "登录用户总数:%s"%(jsonData['total'] - jsonData['visitor']),
            "======================================",
            "登录用户数据",
            "======================================"
        )
        for fans in jsonData['viewer']:
          lb.insert(END,
                "用户ID:%s"%fans['id'],
                "用户昵称:%s"%fans['name'],
                "用户等级:%s"%fans['levelList'][0]['levelName'],
                "用户城市:%s"%fans['city'],
                "======================================"
            )
def removeData():
    lb.delete(0,END)
    e1.delete(0,END)
Button(root,text="获取数据",width=10,command=getUsertList).grid(row=0,column=0,padx=330,pady=5,sticky=W)
Button(root,text="清除",width=7,command=removeData).grid(row=0,column=0,padx=418,pady=5,sticky=E)
mainloop()

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值