首页 > 编程语言 >Python爬虫案例二:获取虎牙主播图片(动态网站)

Python爬虫案例二:获取虎牙主播图片(动态网站)

时间:2024-08-24 15:24:20浏览次数:10  
标签:__ name Python self 虎牙 params data response 主播

爬虫流程:优先假设是JSON数据,抓包方式只能翻页
 JSON数据
 HTML数据
 1.异步数据(即先返回HTML,再返回目标的数据,只是触发了JSON请求),不在HTML中
 2.不能刷新网页,直接翻页

测试链接:https://live.huya.com/

源代码: 

import requests, json, os
class Two(object):
    def __init__(self):
        # 初始化
        self.no = 1
        self.start_url = 'https://live.huya.com/liveHttpUI/getLiveList?'
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36'
        }
    # params不能写在__init__()里面,因为__init__()只执行一次,params是变化的
    def confrim_params(self):
        # 构造7页的params
        for i in range(1, 8):
            params = {
                'iGid': '1663',
                'iPageNo': '{}'.format(i),  # i是字符串
                'iPageSize': '120'
            }
            self.request_start_url(params)
            # break
    def request_start_url(self, params):
        # 请求起始地址
        # 法一:
        # response = requests.get(self.start_url, headers = self.headers(), params=params).text
        # response = json.loads(response)

        # 法二(request自带,自动变字典)---常用:
        response = requests.get(self.start_url, headers=self.headers, params=params).json()
        self.parse_response(response)

    def parse_response(self, response):
        # 解析响应
        for data in response['vList']:
            name = data['sNick'].replace('.', '').replace('/', '')
            link = data['sScreenshot']
        self.request_link(name, link)

    def request_link(self, name, link):
        # 请求图片链接
        img_data = requests.get(link, headers=self.headers).content
        self.create_dir(name, img_data)

    def create_dir(self, name, img_data):
        # 创建文件夹
        if not os.path.exists('../虎牙'):
            os.mkdir('../虎牙')
        self.save_data(name, img_data)

    def save_data(self, name, img_data):
        # 保存图片
        with open(f'虎牙/{name}.jpg', 'wb') as f:
            f.write(img_data)
        print('ok  第{}张--{}'.format(self.no, name))
        self.no += 1

    def main(self):
        # 逻辑控制部分
        self.confrim_params()

if __name__ == '__main__':
    t = Two()
    t.main()

 

标签:__,name,Python,self,虎牙,params,data,response,主播
From: https://blog.csdn.net/m0_74614835/article/details/141324042

相关文章

  • 豆瓣评分8.6!Python社区出版的Python故事教程,太强了!
    Python是活力四射的语言,是不断发展中的语言。就连使用Python多年的行者也不敢说对Python的方方面面都了解并可以自由运用,想必读者可能更加无法快速掌握所有重点技巧了。今天给小伙伴们分享的这份手册是用互动的开发故事来探讨Pyfhonic开发的故事书籍,是一本Python语言详解......
  • 豆瓣评分9.0!Python3网络爬虫开发实战,堪称教学典范!
    今天我们所处的时代是信息化时代,是数据驱动的人工智能时代。在人工智能、物联网时代,万物互联和物理世界的全面数字化使得人工智能可以基于这些数据产生优质的决策,从而对人类的生产生活产生巨大价值。在这个以数据驱动为特征的时代,数据是最基础的。数据既可以通过研发产品获得,......
  • GitHub星标破万!Python学习教程(超详细),真的太强了!
    Python是一门初学者友好的编程语言,想要完全掌握它,你不必花上太多的时间和精力。Python的设计哲学之一就是简单易学,体现在两个方面:语法简洁明了:相对Ruby和Perl,它的语法特性不多不少,大多数都很简单直接,不玩儿玄学。切入点很多:Python可以让你可以做很多事情,科学计算和数据......
  • Python爬虫案例一:获取古诗文并按用户输入的作者名进行数据保存
    前言:1、什么是爬虫?也称为网页蜘蛛(WebSpider),通俗来说,解放人的双手,去互联网获取数据,以数据库,txt,excel,csv,pdf,压缩文件,image,video,music保存数据。本质:模拟浏览器,向服务器发送网络请求,接受服务器返回的数据,并保存数据。2、爬虫的分类?A......
  • LeetCode-Python-1650. 二叉树的最近公共祖先 III
    给定一棵二叉树中的两个节点 p 和 q,返回它们的最近公共祖先节点(LCA)。每个节点都包含其父节点的引用(指针)。Node 的定义如下:classNode{publicintval;publicNodeleft;publicNoderight;publicNodeparent;}根据维基百科中对最近公共祖先节点......
  • MAC 查看是否安装 Python
    在Mac上查看是否安装了Python以及安装的版本,你可以通过终端(Terminal)来执行一些简单的命令。以下是几种常用的方法:方法1:使用python或python3命令打开终端(Terminal)。输入python--version或python3--version(取决于你的系统配置和Python的安装方式),然后回车。如果系统返......
  • 基于python+flask框架的鞋子购物系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和电子商务的普及,线上购物已成为人们日常生活中不可或缺的一部分。鞋类作为时尚与舒适并重的消费品,其市场需求持......
  • 基于python+flask框架的假期托管服务管理系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着社会节奏的加快和家庭结构的变化,双职工家庭及单亲家庭对于儿童假期托管的需求日益增长。传统的家庭照看模式已难以满足现代家庭对于孩......
  • Python 教程(三):Python运算符合集
    Python中常用的一些运算符类型算术运算符+:加法-:减法*:乘法/:除法(结果为浮点数)%:取模(即除法余数)**:幂(指数)//:整除(结果为商的整数部分)示例代码: a=10b=3print("加法:",a+b)#输出13print("减法:",a-b)#输出7print("乘法:",a*b)#输出3......
  • 基于python+flask框架的同城跑腿平台(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在快节奏的现代生活中,人们对于即时服务的需求日益增长,尤其是在同城范围内,从紧急文件传递、代购商品到代取快递等,各种即时需求层出不穷。然......