
精美图片哪里找,保姆级教程爬取让你不再犹豫!
发布日期:2021-05-18 01:39:08
浏览次数:17
分类:精选文章
本文共 1974 字,大约阅读时间需要 6 分钟。
Python爬虫:基于Scrapy爬取虎牙星秀主播图片
项目准备
创建一个新的Scrapy项目是开始的第一步。在命令行中输入以下命令:
scrapy startproject Huyacd Huyascrapy genspider huya "huya.com"
接下来需要修改Scrapy的配置文件settings.py
,确保支持并发下载和图片存储:
BOT_NAME = 'Huya'SPIDER_MODULES = ['Huya.spiders']NEWSPIDER_MODULE = 'Huya.spiders'LOG_LEVEL = "ERROR"CONCURRENT_REQUESTS = 32DEBUG = False# 配置images pipelineIMAGES_STORE = "images"
创建start.py
脚本以便启动爬虫:
from scrapy import cmdlineimport jsondef main(): engine = cmdline.CommandLineRunner() engine.crawl('huya', {'loglevel': 'ERROR'}) returnif __name__ == '__main__': main()
网页分析
进入虎牙星秀区域后,观察发现数据并非动态加载而是静态加载。通过分析请求URL获取JSON数据,发现数据编码为Unicode格式。为了解决编码问题,可以在parse
方法中指定编码格式:
def parse(self, response): data_list = json.loads(response.text, encoding='utf-8') # 对数据进行处理 return
代码实现
huya.py
是核心爬虫文件:
class HuyaSpider(scrapy.Spider): name = 'huya' allowed_domains = ['huya.com'] start_url = 'https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=1663&tagAll=0&page=1' def parse(self, response): data_list = json.loads(response.text, encoding='utf-8') for data in data_list.get('data', {}).get('datas', []): yield { 'img_url': data['screenshot'], 'title': data['nick'] } # 指定爬取的页面数 if self.meta.get('page_num') < 3: yield Request( url=f'{self.start_url}&page={self.meta.get("page_num", 1) + 1}', meta={'page_num': self.meta.get('page_num', 1) + 1}, encoding='utf-8' )
pipelines.py
负责存储和下载图片:
class HuyaPipeline(ImagesPipeline): def get_media_requests(self, item, info): return [ Request( url=item['img_url'], meta={'title': item['title']} ) ] def file_path(self, request, response, info): return f'{info["title"]}.jpg'
运行结果
通过以上配置,爬虫项目能够成功抓取虎牙主播的图片和相关信息。建议将爬虫限制在合理范围内,避免频繁访问服务器。
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年04月13日 23时24分02秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Android 架构组件 – 让天下没有难做的 App
2019-03-13
能解决数据可视化大屏需求的3款可视化工具
2019-03-13
【Altium Designer21】工作栏中文解析
2019-03-13
[87]用secureCRT连接虚拟机中的Ubuntu系统,出现“远程主机拒绝连接”错误
2019-03-13
Shell脚本防DNS攻击检测并删除肉机IP
2019-03-13
如何在VSCode中定制JSON的IntelliSense
2019-03-13
椭圆曲线的定义
2019-03-13
多代理区块链框架客户端的操作
2019-03-13
RSA操作中的公钥和私钥的生成
2019-03-13
go语言中类的继承和方法的使用
2019-03-13
caffe训练的时候遇到的text-format 错误解决方案。
2019-03-13
Little Zu Chongzhi's Triangles
2019-03-13
Train Problem II(卡特兰数+大数乘除)
2019-03-13
一些技术博客
2019-03-13
第01问:MySQL 一次 insert 刷几次盘?
2019-03-13
libvirtd:内部错误:Failed to apply firewall rule
2019-03-13
优先级队列2
2019-03-13
TiKV 源码解析系列文章(十三)MVCC 数据读取
2019-03-13
1900分图论 : 1183E1 LCA + Kruskal
2019-03-13
(建议收藏)计算机网络:传输层概述、UDP协议与可靠传输协议习题解析与拓展
2019-03-13