Python获取熊猫TVLOL栏所有主播信息以及人气排名

今天爬取的网页为:熊猫TV LOL栏

 

 

一,分析网页:

一共6页,我们要想办法获取所有页的信息,所以F12查看网络请求,点击第二页:

发现了这个请求

这就是我们需要的东西

所以推测

pageno参数为第几页

所以代码就好写了

二,代码实现

将需要的东西封装成类

class InfoClass:
    def __init__(self, id, name, lookpeople):
        self.name = name
        self.id = id
        self.lookpeople = int(lookpeople)

    def __repr__(self):
        return repr((self.id, self.name, self.lookpeople))

存所有主播信息:

allpeople = []

根据pagenum获取主播信息:

def getAll(pagenum):
    url = "https://www.panda.tv/ajax_sort?token=&pageno=" + str(
        pagenum) + "&pagenum=120&classification=lol&order=top&_=1542530305175"
    html = requests.get(url)
    #获取json数据
    mjson = html.json()
    #打包成字典
    mdic = dict(mjson)
    mlist = mdic['data']['items']
    #遍历list加入所有主播信息
    for item in mlist:
        id = item['id']
        name = item['name']
        personNum = int(item['person_num'])
        newP = InfoClass(id, name, personNum)
        allpeople.append(newP)

获取每一页信息:

print("%-10s %-40s %-10s" % ("id房间号", "姓名", "观看人数"))
for pagenum in range(6):
    getAll(pagenum+1)

排序:

#根据lookpeople降序排序
li = sorted(allpeople, key=lambda InfoClass: InfoClass.lookpeople, reverse=True)
for item in li:
    print("%-10s %-40s %-10s" % (item.id, item.name, item.lookpeople))

至此代码完成。

完整代码:

#Create By ZZK
import requests


class InfoClass:
    def __init__(self, id, name, lookpeople):
        self.name = name
        self.id = id
        self.lookpeople = int(lookpeople)

    def __repr__(self):
        return repr((self.id, self.name, self.lookpeople))


allpeople = []


def getAll(pagenum):
    url = "https://www.panda.tv/ajax_sort?token=&pageno=" + str(
        pagenum) + "&pagenum=120&classification=lol&order=top&_=1542530305175"
    html = requests.get(url)
    # 获取json数据
    mjson = html.json()
    # 打包成字典
    mdic = dict(mjson)
    mlist = mdic['data']['items']
    # 遍历list加入所有主播信息
    for item in mlist:
        id = item['id']
        name = item['name']
        personNum = int(item['person_num'])
        newP = InfoClass(id, name, personNum)
        allpeople.append(newP)


print("%-10s %-40s %-10s" % ("id房间号", "姓名", "观看人数"))
for pagenum in range(6):
    getAll(pagenum + 1)
# 根据lookpeople降序排序
li = sorted(allpeople, key=lambda InfoClass: InfoClass.lookpeople, reverse=True)
for item in li:
    print("%-10s %-40s %-10s" % (item.id, item.name, item.lookpeople))

运行结果GIF如下:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值