当前位置: 首页 > news >正文

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

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

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

源代码: 

import requests, json, os
class Two(object):def __init__(self):# 初始化self.no = 1self.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页的paramsfor i in range(1, 8):params = {'iGid': '1663','iPageNo': '{}'.format(i),  # i是字符串'iPageSize': '120'}self.request_start_url(params)# breakdef 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).contentself.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 += 1def main(self):# 逻辑控制部分self.confrim_params()if __name__ == '__main__':t = Two()t.main()

 


http://www.mrgr.cn/news/6291.html

相关文章:

  • Spring Boot实战:通过Spring Batch处理批量订单数据
  • UDP+TCP
  • 类别特征编码 ———特征工程
  • Unity 编辑器-UGUI拓展Button,一个和原Button一样按钮⭐
  • AI大模型日报#0820:DeepMind创始人访谈、阿里多模态mPLUG-Owl3、抱抱脸SOTA小模型
  • P1167 刷题
  • GIS空间数据库,基本概念
  • docker相关
  • 蛋托清洗机的优势特点以及维护和保养:
  • TCP的连接建立及报文段首部格式
  • Android CCodec Codec2 (三)C2Param - Ⅰ
  • C# Dictionary->ConcurrentDictionary和哈希表
  • 【速览】计算机网络(更新中)
  • 【Spring Boot】全局异常处理
  • 微信小程序:浮动按钮
  • jenkins 修改访问路径
  • node.js express创建本地服务以及使用pm2启动服务
  • 25届网安秋招面试之后台信息泄露
  • Nginx知识详解(理论+实战更易懂)
  • 二十二、处理字符串