目的:通过fiddler在电脑上对手机版斗鱼主播进行抓包,爬取所有主播的昵称和图片链接

关于使用fiddler抓取手机包的设置:

把手机和装有fiddler的电脑处在同一个网段(同一个wifi),手机连接好wifi后,点击手机wifi的连接,把代理改为手动,主机地址设置为fiddler所在的电脑ip,端口号为8888(fiddler默认使用的端口号),就可以对手机进行抓包

1 创建爬虫项目douyumeinv

scrapy startproject douyumeinv

2 设置items.py文件,对要爬取数据设置字段名字及类型进行保存

# -*- coding: utf-8 -*-# Define here the models for your scraped items
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/items.htmlimport scrapyclass DouyumeinvItem(scrapy.Item):# 主播昵称nickname = scrapy.Field()# 主播房间的图片链接roomSrc = scrapy.Field()# 照片在本地保存的位置imagesPath = scrapy.Field()

3 在spiders文件夹内创建爬虫文件douyuspider.py,代码如下

# -*- coding: utf-8 -*-
import scrapy
from douyumeinv.items import DouyumeinvItem
import jsonclass DouyuSpider(scrapy.Spider):# 爬虫名字,终端执行命令时使用。如scrapy crawl douyuname = 'douyu'# 指定爬取的域范围allowed_domains = ['douyu.com']# 要爬取的页码num = 1# 主播个数n = 0# 实际有主播的页码pageCount = 0url = 'https://m.douyu.com/api/room/mixList?page=' + str(num) + '&type=qmxx'# 爬取的url列表start_urls = [url]def parse(self, response):'''解析函数'''# 把获取的json数据转换为python字典data = json.loads(response.text)['data']# 获取实际具有主播的页码self.pageCount = int(data['pageCount'])for each in data['list']:self.n += 1item = DouyumeinvItem()# 主播房间图片链接item['roomSrc'] = each['roomSrc'].encode('utf-8')# 主播昵称item['nickname'] = each['nickname'].encode('utf-8')# print(item)# 返回数据给管道yield item# 重新发送请求    self.num += 1# 只对有主播的页码,进行发送请求if self.num <= self.pageCount:self.url = 'https://m.douyu.com/api/room/mixList?page=' + str(self.num) + '&type=qmxx'yield scrapy.Request(self.url, callback=self.parse)print '\n已爬完第%d页,共%d页,共爬取%d个主播\n'%(self.num - 1,self.pageCount,self.n)

4 设置pipelines.py管道文件,利用images.ImagesPipeline类来请求图片链接并处理下载好的图片

# -*- coding: utf-8 -*-# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html# class DouyumeinvPipeline(object):# def process_item(self, item, spider):#     return item
import scrapy
from scrapy.pipelines import images
from scrapy.utils.project import get_project_settings
import osclass DouyumeinvPipeline(object):def process_item(self, item, spider):return itemclass ImagesPipeline(images.ImagesPipeline):images_store = get_project_settings().get('IMAGES_STORE')# count用来统计实际下载并改名成功的图片个数count = 0def get_media_requests(self, item, info):'''get_media_requests的作用就是为每一个图片链接生成一个Request对象,这个方法的输出将作为item_completed的输入中的results'''# return [Request(x) for x in item.get(self.images_urls_field, [])]image_url = item['roomSrc']# print('='*60)# print(image_url)# print(item['nickname'])# print('='*60)yield scrapy.Request(image_url)def item_completed(self, results, item, info):# results是一个元组,每个元组包括(success, imageinfoorfailure)。# 如果success=true,imageinfoor_failure是一个字典,包括url/path/checksum三个key。image_path = [x["path"] for ok,x in results if ok]# print('*'*60)# 由于yield的原因,image_path的值为每次输出一个列表['full/0c1c1f78e7084f5e3b07fd1b0a066c6c49dd30e0.jpg']# print(image_path[0])# print(item['nickname'])# print('*'*60)# 此处发现,不用再创建相应的文件夹,直接使用下面的字符串拼接,就可以生成一个文件夹old_file = self.images_store + '/' + image_path[0]new_file = self.images_store + '/full/' + item['nickname'] + '.jpg'# print('\n'  + '-'*60)# print(old_file)# print(new_file)# print('\n')# print(os.path.exists(old_file))# 判断该文件及路径是否存在# 如果图片下载成功,则计数加1if os.path.exists(old_file):self.count += 1# print('\n')# print('-'*60 + '\n')os.rename(old_file,new_file)item['imagesPath'] = self.images_store + '/full/' + item['nickname']# print(os.listdir('/home/cc/pachong/2-scrapy框架/01.scrapy框架与Spider类/douyumeinv/douyumeinv/images/full/'))print('#'*60)print('已成功下载%d张图片'%(self.count))print('#'*60)return item

5 设置settings.py文件

6 测试结果如下:

转载于:https://www.cnblogs.com/silence-cc/p/9319126.html

使用scrapy爬取手机版斗鱼主播的房间图片及昵称相关推荐

  1. python爬斗鱼直播房间名和主播名_斗鱼爬虫,爬取颜值频道的主播图片和名字

    在斗鱼的界面中,如果滚动条没有拉下去,那么下面的图片都只是一条鱼的图片,所以要使浏览器自动拉动滚动条,可以用到python的selenium库, 1.配置浏览器 要使用selenium,还需要安装 c ...

  2. Python爬虫:爬取某鱼颜值主播MM图片,你的最爱!?

    一.准备 1.创建scrapy项目 scrapy startproject douyu cd douyu scrapy genspider spider "www.douyu.com&quo ...

  3. Python爬虫:爬取某鱼颜值主播图片并保存到本地升级版!

    一.准备 1.创建scrapy项目 scrapy startproject douyucd douyuscrapy genspider spider "www.douyu.com" ...

  4. 爬取虎牙TV全站主播信息

    """ Created by Young on 2019/1/16 17:00 """from bs4 import BeautifulSo ...

  5. python怎么爬虎牙_Python爬虫:爬取虎牙星秀主播图片

    动态爬取思路讲解 1.简单的爬虫只需要访问网站搜索栏处的url,就可以在开发者工具(F12)处,利用正则表达式.Xpath.css等进行定位并抓取数据: 2.虎牙星秀页面不同于简单的网页,随时都在更新 ...

  6. nodejs爬虫爬取 喜马拉雅FM 指定主播歌单并下载

    最近一直在学英语,因此写了个爬虫爬取歌单并下载,然后随时都可以听. GitHub地址:https://github.com/leeseean/nodejs-crawler. 页面分析 要用爬虫下载音频 ...

  7. python原生爬虫爬取熊猫TV LOL主播人气排行

    本文采取phthon原生爬虫,没有采用常用的爬虫框架,比较适合新手练手. 首先进入熊猫TV英雄联盟主页----https://www.panda.tv/cate/lol?pdt=1.24.s1.2.4 ...

  8. 【爬虫+数据分析】爬取了虎牙36709主播信息,发现虎牙每天都是在直播王者荣耀和英雄联盟

    2021 年 3 月,虎牙交出了去年成绩单,披露发布了 2020 年 Q4 及全年财报.2020 年第四季度,虎牙总收入为 29.90 亿元,全年总收入为 109.14 亿元. 于是一个恶心的念头想起 ...

  9. 原生爬虫(爬取熊猫直播人气主播排名)

    此代码未采用任何反爬虫策略 ''''This is a module '''import refrom urllib import request # 断点调试class Spider():'''Th ...

最新文章

  1. DNA sequencing technologies: 2006–2016
  2. 常考数据结构与算法:删除链表的倒数第n个节点
  3. WINCE6.0 chain.bin和xipkernel.bin解析
  4. 【洛谷】选数---深度优先搜索+单调不降去重
  5. 直接在Dao层进行测试的问题
  6. layui selec下的option出现之前的渲染
  7. vue 判断页面加载完成_vue项目搭建及总结
  8. 消息队列入门案例-环境搭建
  9. Spring容器启动时出现Failed to read schema document错误
  10. 最大子数列和的问题求解
  11. 问题十九:怎么模拟ray tracing中漫射材料球体的颜色(diffuse materials)
  12. python matplotlib打开相机
  13. 【LOJ6198】谢特(后缀自动机)(01Trie)(dsu on tree)
  14. HashMap遍历时移除元素
  15. #455 科技乱炖:看完《流浪地球2》,我们为行星发动机设计了网络架构
  16. cordova App脚手架
  17. 矩阵谱半径与矩阵范数的关系
  18. 大学物理---统计物理(热学部分)
  19. 如何合理安排工作时间?
  20. 用JAVA将繁体中文转化为简体中文

热门文章

  1. 一、为什么要做接口自动化,怎样做
  2. 【java】英语单词对战小游戏
  3. 你的微信昵称,正在暴露你
  4. cad二次开发-线段合并
  5. 基于STM32智能小车->电机驱动
  6. 实现蝴蝶翩翩飞舞的效果
  7. 【散文】 如果今生我是你梦中的蝴蝶
  8. 一文搞懂 Web Worker(原理到实践)
  9. 3个月免费云服务器,10+行业解决方案,阿里再推企业上云浪潮
  10. sendgrid html text,包括里面sendgrid鄂麦邮件的内容我的HTML代码