吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5718|回复: 38
收起左侧

[Python 转载] 70行代码爬取斗鱼虎牙企鹅直播观看人数

[复制链接]
从零学习的歪经小 发表于 2020-8-24 21:49
本帖最后由 2079898548 于 2020-8-24 21:52 编辑

最近学了下多线程,但不知道爬点什么,然后最后就写个爬取直播人数
然后,就先弄了个双线程。
爬取的是lol和王者荣耀的直播观看人数。
2个游戏有高有低
没引战的意思
刚刚晚上爬的
1.png
中午爬的
8%Z@%]@_PW@FTL0QFLRDJ`4.png

[Python] 纯文本查看 复制代码
# -*- coding: utf-8 -*-

import requests
import threading
from lxml import etree

lolURL={
    "huya":"https://www.huya.com/g/lol",
    "qier":"https://egame.qq.com/livelist?layoutid=lol",
    "douyu":"https://www.douyu.com/g_LOL"
}
wzURL={
    "huya":"https://www.huya.com/g/2336",
    "qier":"https://egame.qq.com/livelist?layoutid=1104466820",
    "douyu":"https://www.douyu.com/g_wzry"
}

headers={
    'accept':'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01',
    'accept-encoding':'gzip, deflate, br',
    'accept-language':'zh-CN,zh;q=0.9',
    'sec-fetch-dest':'empty',
    'sec-fetch-mode':'cors',
    'sec-fetch-site':'same-origin',
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'
}

lol_people = 0
wz_people = 0

def game_clear(people,game):
    if game == 'lol':
        global lol_people
        lol_people += people
    elif game == 'wz':
        global wz_people
        wz_people += people

def clean(people_list,game):
    people = 0.0
    for r in people_list:
        r=float(r.replace('万','').replace(',','').strip())
        people += r
    game_clear(people,game)


def game_people(URL,game):
    for url,name in zip(URL.values(),URL):
        req = requests.get(url=url,headers=headers).text
        req_xp = etree.HTML(req)
        if name == 'huya':
            people_list = req_xp.xpath('//*[@class="js-num"]/text()')
            clean(people_list,game)
        elif name == 'qier':
            people_list = req_xp.xpath('//*[@class="popular"]/text()')
            clean(people_list,game)
        elif name == 'douyu':
            people_list = req_xp.xpath('//*[@class="DyListCover-hot is-template"]/text()')
            clean(people_list,game)
        else:
            print('程序出错')


if __name__ == '__main__':
    t1 = threading.Thread(game_people(lolURL,"lol"))
    t2 = threading.Thread(game_people(wzURL,"wz"))
    t1.start()
    t2.start()
    print('英雄联盟:%.2f万人'%lol_people)
    print('王者荣耀:%.2f万人'%wz_people)

没引战的意思



还请各位神仙大佬,帮忙看看这多线程,有没有什么问题。
[fly]200积分是个漫长的日子[/fly]

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
天蝎浪花 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
庸寒L + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

似水流年2015 发表于 2020-8-25 00:08
chaoiqun 发表于 2020-8-24 22:44
lxml模块导入失败,

lxml 有时会在线安装出错,这样你就百度,通过下载lxml的相应whl文件到电脑 ,再打开命令窗口
pip install xxxx.whl 的方式安装 xxxx.whl 指你下载的lxml模块的whl文件名。
天蝎浪花 发表于 2020-8-30 12:54
2079898548 发表于 2020-8-30 12:02
我的话,很少用F12找,我直接get网站然后把他写到html里面,找到。然后,搜索万,比较,然后代码里面就能 ...

用文字搜索的话为啥我感觉不好整啊,这次你可以用数字或‘万’查找,可如果是要定位一个按钮呢,查找就不方便了吧。还是你有其它方法?
刚我把自己Elements定位到的class属性和用你查找到Sources页的class属性处分别另存为HTML代码,发现2边是不同的,把我这小菜整迷糊了,难道源码还有分?
2020-08-30_12-51-08.png
2hang 发表于 2020-8-24 22:12
千城忆梦 发表于 2020-8-24 22:18
好像斗鱼不显示观看人数 显示的是热度
吾蜗牛 发表于 2020-8-24 22:20
别的不知道,斗鱼这个数是热度,不是人数
Hirsch 发表于 2020-8-24 22:21
import requests
import threading
from lxml import etree这些为什么会显示错误,求大佬指教
zjzhhxx 发表于 2020-8-24 22:23
支持,感觉这些直播平台人数还是有水分
chaoiqun 发表于 2020-8-24 22:44
lxml模块导入失败,
sfc 发表于 2020-8-24 22:46
完全看不懂,
WX2886 发表于 2020-8-24 22:57
感谢楼主分享
花不开但要富贵 发表于 2020-8-24 23:26
Hirsch 发表于 2020-8-24 22:21
import requests
import threading
from lxml import etree这些为什么会显示错误,求大佬指教

因为你没有安装相应的库
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 07:20

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表