requests爬虎牙频道和主播信息

#!/usr/bin/env python  
# -*- coding: utf-8 -*-  
# @Time    : 2018/1/23 15:42  
# @Author  : Aries  
# @Site    :   
# @File    : yy.py  
# @Software: PyCharm  
import requests  
import time  
from lxml import html  
headers = {  
    'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",  
    'x-devtools-emulate-network-conditions-client-id': "(6DC99B5E32009D9E60CDB0C3B620074)",  
    'upgrade-insecure-requests': "1",  
    'accept': "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",  
    'accept-language': "zh-CN,zh;q=0.9,en;q=0.8",  
    'cookie': "udb_passdata=1; PHPSESSID=91siudst3ptb6egbjgh8j3rn42; SoundValue=0.50; guid=0e74abb6d4e5665a0c52c0e3c1e35727; __yasmid=0.2352245147818357; __yamid_tt1=0.2352245147818357; __yamid_new=C7D8A9F6CD3000013AA46C206EC0135D; _yasids=__rootsid%3DC7D8A9F6CDA00001226020701A00E5B0; Hm_lvt_51700b6c722f5bb4cf39906a596ea41f=1516692949; isInLiveRoom=; Hm_lpvt_51700b6c722f5bb4cf39906a596ea41f=1516696335",  
    'cache-control': "no-cache",  
    }  
class huyaFcukYouSpider:  
    urlStyle = "http://www.huya.com/g"  
    '''  
    解析出来全部分类网页内容  
    '''  
    def huyaRootHtml(self):  
        print("开始分析虎牙分类======》》》")  
        roothtml = requests.get(huyaFcukYouSpider.urlStyle,headers = headers)  
        print("爬分类返回状态码======》》》"+str(roothtml.status_code))  
        return roothtml.text  
    '''  
    解析出来分类html  
    '''  
    def itmStyle(self,roothtml):  
        tree = html.fromstring(roothtml)  
        hrefs = tree.xpath('//*[@id="js-game-list"]/li/a/@href')  
        texts = tree.xpath('//*[@id="js-game-list"]/li/a/img/@title')  
        styleObjects = []  
        for (text, href) in zip(texts, hrefs):  
            styleObject = {"text":text,'href':href}  
            styleObjects.append(styleObject)  
        print("分类已经获取成功,大哥开始对下面的频道吧")  
        print("分类数量:"+ str(len(styleObjects)))  
        return styleObjects  
    '''  
    请求频道内的信息  
    '''  
    def itemContent(self, styleObjects):  
        for item in styleObjects:  
            print("开始分析  "+item["text"]+"  ======》》》")  
            itemhtml = requests.get(item["href"], headers=headers)  
            print("爬"+item["text"]+"返回状态码======》》》" + str(itemhtml.status_code))  
            tree = html.fromstring(itemhtml.text)  
            titles = tree.xpath('//*[@id="js-live-list"]/li/a[contains(@class,"title") and contains(@class,"new-clickstat")]/text()')  
            nicknames = tree.xpath('//*[@id="js-live-list"]/li[@class="game-live-item"]/span/span[contains(@class,"avatar") and contains(@class,"fl")]/i/text()')  
            numbers = tree.xpath('//*[@id="js-live-list"]/li[@class="game-live-item"]/span/span[@class="num"]/i[@class="js-num"]/text()')  
            for (title, nickname,number) in zip(titles, nicknames,numbers):  
                print("\t\t主播:"+nickname+";正在频道名称为: "+title +"直播,观看人数:"+str(number))  
                #感觉慢就去掉  
                time.sleep(1)  
            # 感觉慢就去掉  
            time.sleep(10)  
            pass  
    def go(self):  
        rootHtml = self.huyaRootHtml()  
        styleObjects = self.itmStyle(rootHtml)  
        self.itemContent(styleObjects)  
huya = huyaFcukYouSpider()  
huya.go()  

才学爬虫的时候拿来练手的一个项目,分享给大家希望有收获!

原文发布于微信公众号 - 编程坑太多(idig88)

原文发表时间:2018-03-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏生信技能树

一篇文章学会ChIP-seq分析(上)

写在前面:《一篇文章学会ChIP-seq分析(上)》《一篇文章学会ChIP-seq分析(下)》为生信菜鸟团博客相关文章合集,共九讲内容。带领你从相关文献解读、资...

3.3K60
来自专栏有趣的django

21天打造分布式爬虫-房天下全国658城市房源(十一)

22510
来自专栏生信技能树

850K甲基化芯片数据的分析

作者是生信技能树组建的表观遗传学学习小组的小组长,前面已经发过一个: 学员分享-Chip-seq 实战分析流程 本文是看到生信技能树有个450K甲基化芯片数据处...

633110
来自专栏用户2442861的专栏

Pyqt phonon的使用

Qt phonon地址:http://wenku.baidu.com/link?url=nH_dZ8lZbXHy8N5__8jAWLXcuMYf4yRjdCK...

21210
来自专栏有趣的django

21天打造分布式爬虫-中国天气网和古诗文网实战(四)

网址:http://www.weather.com.cn/textFC/hb.shtml

13720
来自专栏落影的专栏

iOS音视频播放(Audio Unit播放音频+OpenGL ES绘制视频)

前言 相关文章: 使用VideoToolbox硬编码H.264 使用VideoToolbox硬解码H.264 使用AudioToolbox编码AAC 使...

57190
来自专栏coding

python爬虫抓取新浪微博数据

新浪微博的数据是用ajax异步下拉加载的,在chrome的调试模式下可捕捉到相应的请求:

4.4K50
来自专栏技术/开源

【开源】XPShadow, 用阴影让UWP更有层次感

UWP采用的是纯扁平化的设计,个人感觉极端了点,整个世界都是平的,导致App分不清层次,看不出重点。其实扁平化是趋势,android, ios都在搞,问题是an...

214100
来自专栏GopherCoder

『Go 语言学习专栏』-- 第十五期

25240
来自专栏工科狗和生物喵

C++初入门,写个弱智银行卡系统

写在前面: 自从课程设计之后,我们就开始了生产实习,我们老师找的是河南卫华集团的技术部实习,经过一阵子的不适应(比如说河南这边的基本没味道的伙食,我们现在两个人...

491110

扫码关注云+社区

领取腾讯云代金券