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()

 感觉慢就把time.sleep去掉

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scrapy 和 Requests 都是常用的 Python 虫工具,但它们有一些区别。 1. 架构:Scrapy 是一个完整的虫框架,它提供了整个虫流程的管理和控制。它有自己的调度器、中间件和管道等组件,可以更好地管理请求、解析和存储数据。而 Requests 是一个简单的 HTTP 库,用于发送 HTTP 请求和处理响应,但它并不提供整个虫流程的管理。 2. 异步性能:Scrapy 使用异步网络库 Twisted 来实现非阻塞的请求处理,可以同时发送多个请求并处理响应,从而提高取效率。而 Requests 是同步的,每次发送请求都需要等待响应返回才能继续下一步操作。 3. 功能扩展:Scrapy 提供了丰富的功能扩展机制,可以通过编写中间件、管道等扩展组件来实现自定义的功能,比如自动翻页、自动登录等。Requests 则相对简单,提供了基本的请求和响应处理功能,如果需要更复杂的功能需要自行实现。 4. 学习曲线:Scrapy 的学习曲线相对较陡峭,因为它是一个完整的框架,需要掌握其整个工作流程和各个组件的使用。而 Requests 则非常简单易用,上手和学习成本较低。 总的来说,如果需要开发大规模、高效率的虫项目,或者需要自定义功能的扩展,可以选择使用 Scrapy。如果只是进行简单的 HTTP 请求和响应处理,或者对虫项目规模较小,可以选择使用 Requests

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值