Scrapy——6

  1. 怎样进行APP抓包
  2. scrapy框架抓取APP豆果美食数据
  3. 怎样用scrapy框架下载图片
  4. 怎样用scrapy框架去下载斗鱼APP的图片?
  5. Scrapy创建下载图片常见那些问题

怎样进行APP抓包? 1.连接网络

  • 安装fiddler,并且进行配置:

Tools >> options >> connections >> 勾选 allow remote computers to connect

  • 查看本机ip地址:    
      在cmd窗口中,输入 ipconfig  ,查看  以太网 ,可以看到
    IPv4 地址...............:192.168.0.104
    这个192.168.*.***(192.168.0.104) 就是你的本机IP
  • 确保手机连接了wifi,并且和电脑是在同一个局域网,
  • 设置代理,在WiFi中长按连接的wifi选择设置代理

  • 在手机中,打开浏览器,访问

http://10.209.143:1234

IP:是第二步查看到的ip地址,替换成你自己的IP
port:8888是你在fiddler中配置的
注意:有些浏览器会显示打不开,更换其他浏览器就可以了

怎样进行APP抓包? 2.访问网络

打开后点击最后的链接(光标处),进行证书安装就可以了

怎样进行APP抓包? 3.安装证书

  • 安装 证书

部分手机可以直接点击 安装
     部分手机需要 设置 >> wifi(或WLAN) >> 高级设置 >> 安装证书 >>
            选中刚刚下载的 证书文件 FiddlerRoot.cer >> 确定
     设置(Settings) >> 更多设置 >> 系统安全 >> 从存储设备安装

为证书命名 , 输入自己喜欢的名字,譬如 fiddler  ,确定 ,  显示 证书安装完成

安装完成后,在 设置(Settings) >> 更多设置 >> 系统安全 >> 信任的凭证 >>
        系统和用户2个tab页 >> 用户 >> 可以查看到 DO_NOT_RUST_FiddlerRoot

PS: 不安装证书,抓取http的数据是没问题的,但是抓取不了https的数据

怎样进行APP抓包? 4.手机抓包

注意:
1、大部分app都可以直接抓包
2、少部分app没办法直接获取,需要 wireshark、反编译、脱壳 等方式去查找加密算法
3、app抓包一般都是抓取到服务器返回的json数据包

 scrapy框架抓取APP豆果美食数据

手机打开豆果美食APP,同时打开fiddler,浏览你需要爬取的数据页面,然后就可以在fiddler中分析抓取的网络请求

因为手机数据一般都是json格式的数据,所以多注意网络请求的格式即可

很快就找到了我们需要的请求,接下来就用scrapy模拟请求解析数据

  • 创建项目

  • Local/Scrapy/douguo/douguo/items.py  设置需要保存的数据(作者、菜名、用时、难度、前言、图片链接)

    import scrapy
    
    class DouguoItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    auth = scrapy.Field()
    cook_name = scrapy.Field()
    cook_time = scrapy.Field()
    cook_difficulty = scrapy.Field()
    cook_story = scrapy.Field()
    img = scrapy.Field()
  • Local/Scrapy/douguo/douguo/settings.py    设置爬虫协议
    # Obey robots.txt rules
    ROBOTSTXT_OBEY = False
  • Local/Scrapy/douguo/douguo/spiders/douguojiachang.py    编写代码

  • 根据网络请求数据的方法,进行post请求,自行分析需要的请求头
  • scrapy获取json数据,用的是response.body,再用json.dumps()转换
    # -*- coding: utf-8 -*-
    import scrapy
    import json from ..items import DouguoItem class DouguoJiachangSpider(scrapy.Spider):
    name = 'douguo_jiachang'
    # allowed_domains = ['baidu.com']
    # start_urls = ['http://api.douguo.net/recipe/v2/search/0/20']
    page = 0 def start_requests(self):
    base_url = 'http://api.douguo.net/recipe/v2/search/{}/20'
    url = base_url.format(self.page)
    data = {
    'client': '',
    '_session': '',
    'keyword': '家常菜',
    'order': '',
    '_vs': ''
    }
    self.page += 20
    yield scrapy.FormRequest(url=url, formdata=data, callback=self.parse) def parse(self, response):
    date = json.loads(response.body.decode()) # 将json格式数据转换成字典
    t = date.get('result').get('list')
    for i in t:
    douguo_item = DouguoItem()
    douguo_item['auth'] = i.get('r').get('an')
    douguo_item['cook_name'] = i.get('r').get('n')
    douguo_item['cook_time'] = i.get('r').get('cook_time')
    douguo_item['cook_difficulty'] = i.get('r').get('cook_difficulty')
    douguo_item['cook_story'] = i.get('r').get('cookstory')
    douguo_item['image_url'] = i.get('r').get('p') yield douguo_item

结果:


怎样用scrapy框架下载图片

在前面的代码基础上继续更加功能

  • Local/Scrapy/douguo/douguo/settings.py    设置图片下载路径,设置下载延迟,激活相应的图片下载管道,调整相应优先级
  • 路径IMAGES_STORE是固定写法,后面的DOWNLOAD_DELAT也是,setting里的都是如此
  • “.”表示当前路径,属于相对路径的写法,也可以写成绝对路径
  • 管道优先级,数字越小,优先级越高
    # Configure item pipelines
    # See https://doc.scrapy.org/en/latest/topics/item-pipeline.html
    ITEM_PIPELINES = {
    'douguo.pipelines.DouguoPipeline': 229,
    'douguo.pipelines.ImagePipline': 300,
    }
    .............
    .............
    .............
    IMAGES_STORE = './images/'
    DOWNLOAD_DELAY = 1
  • Local/Scrapy/douguo/douguo/items.py    设置相应的图片下载链接和下载路径
    import scrapy
    
    class DouguoItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    auth = scrapy.Field()
    cook_name = scrapy.Field()
    cook_time = scrapy.Field()
    cook_difficulty = scrapy.Field()
    cook_story = scrapy.Field()
    image_url = scrapy.Field()
    image_path = scrapy.Field()
  • Local/Scrapy/douguo/douguo/pipelines.py    设置图片下载管
    # -*- 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
    import os
    import scrapy
    from scrapy.pipelines.images import ImagesPipeline
    from scrapy.exceptions import DropItem from .settings import IMAGES_STORE class DouguoPipeline(object):
    def process_item(self, item, spider):
    print(item)
    return item class ImagePipline(ImagesPipeline): def get_media_requests(self, item, info):
    '''
    对图片的地址生成Request请求进行下载
    '''
    yield scrapy.Request(url=item['image_url']) def item_completed(self, results, item, info):
    '''
    当图片下载完成之后,调用方法
    '''
    format = '.' + item['image_url'].split('.')[-1] # 设置图片格式
    image_path = [x['path'] for ok, x in results if ok] # 获取图片的相对路径
    old_path = IMAGES_STORE + image_path[0] # 老的路径
    new_path = IMAGES_STORE + item['cook_name'] + format # 新的路径 路径+菜名+格式
    item['image_path'] = new_path # 把新的路径传给item
    try:
    os.rename(old_path, new_path) # 改变下载的位置
    except:
    raise DropItem('Image Download Failed')
    return item

结果:


怎样用scrapy框架下载图片

ImagePipeline:
 Scrapy用ImagesPipeline类提供一种方便的方式来下载和存储图片。需要PIL库支持。

怎样用scrapy框架去下载斗鱼APP的图片?


常见问题

Scrapy——6 APP抓包—scrapy框架下载图片的更多相关文章

  1. scrapy之手机app抓包爬虫

    手机App抓包爬虫 1. items.py class DouyuspiderItem(scrapy.Item): name = scrapy.Field()# 存储照片的名字 imagesUrls ...

  2. 【破解APP抓包限制】Xposed+JustTrustMe关闭SSL证书验证!

    转载:https://www.jianshu.com/p/310d930dd62f 1 前言 这篇文章主要想解决的问题是,在对安卓手机APP抓包时,出现的HTTPS报文通过MITM代理后证书不被信任的 ...

  3. Fiddler和app抓包

    1:请在“运行”,即下面这个地方输入certmgr.msc并回车,打开证书管理. 打开后,请点击操作--查找证书,如下所示: 然后输入“fiddler”查找所有相关证书,如下所示: 可以看到,我们找到 ...

  4. Fiddler 网页采集抓包利器__手机app抓包

    用curl技术开发了一个微信文章聚合类产品,把抓取到的数据转换成json格式,并在android端调用json数据接口加以显示: 基于weiphp做了一个掌上头条插件,也是用的网页采集技术:和一个创业 ...

  5. APP 抓包-fiddler

    App抓包原理 客户端向服务器发起HTTPS请求 抓包工具拦截客户端的请求,伪装成客户端向服务器进行请求 服务器向客户端(实际上是抓包工具)返回服务器的CA证书 抓包工具拦截服务器的响应,获取服务器证 ...

  6. 抓包工具fiddler下载配置(三):手机设置代理

      前言 本篇仅讲解了手机端如何设置代理,是[抓包工具fiddler下载配置(一):下载/安装&信任证书]的后续文章,未下载安装抓包工具的需先参考文章[抓包工具fiddler下载配置(一):下 ...

  7. fiddler抓包+安卓机 完成手机app抓包的配置 遇到的一些问题

    fiddler抓包+安卓模拟器完成手机app抓包的配置:fiddler抓包+雷电模拟器 完成手机app抓包的配置 其实在安卓真机上弄比在虚拟机上弄更麻烦一点,它们的步骤都差不多一样,就是在安卓真机上弄 ...

  8. Fiddler+雷电模拟器进行APP抓包

    1.下载最新版Fiddler,强烈建议在官网下载:https://www.telerik.com/download/fiddler 2. 正常傻瓜式安装,下一步,下一步,安装完毕后,先不用急于打开软件 ...

  9. APP 抓包(应用层)

    0x01 前言: app抓包是逆向协议的前提,也是一个爬虫工程师的基本要求,最近发现这块知识非常欠缺就抓紧补补了(我太菜了) 然后接下来是通过vpn将流量导出到抓包软件的方式,而不是通过wifi设置代 ...

随机推荐

  1. YTU 2720: 删出多余的空格

    2720: 删出多余的空格 时间限制: 1 Sec  内存限制: 128 MB 提交: 338  解决: 201 题目描述 小平在给弟弟检查英语作业时时,发现每个英语句子单词之间的空格个数不等,请你编 ...

  2. AngularJS2.0 hello world例子——引入这么多额外的依赖库真是很忧伤啊

    初识Angular2 写一个Angular2的Hello World应用相当简单,分三步走: 1. 引入Angular2预定义类型 import {Component,View,bootstrap} ...

  3. 48.EXt.Data.JsonReader()

    转自:https://blog.csdn.net/huoyanxueren/article/details/2662915?utm_source=blogxgwz6 extJs 2.1学习笔记(Ext ...

  4. 虚拟化技术概要之VMM结构

    1. 概述 当前主流的 VMM (Virtual Machine Monitor) 实现结构可以分为三类: 宿主模型 (OS-hosted VMMs)Hypervisor 模型 (Hypervisor ...

  5. Complicated Expressions(表达式转换)

    http://poj.org/problem?id=1400 题意:给出一个表达式可能含有多余的括号,去掉多余的括号,输出它的最简形式. 思路:先将表达式转化成后缀式,因为后缀式不含括号,然后再转化成 ...

  6. [Swift通天遁地]二、表格表单-(10)快速添加日期选择/多选/动作表单/地图等自定义表单

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  7. [转]Android | Simple SQLite Database Tutorial

    本文转自:http://hmkcode.com/android-simple-sqlite-database-tutorial/ Android SQLite database is an integ ...

  8. firefox 附加组件栏安装

    firefox 在升级到 30的版本后,发现附加组件栏不兼容了. 搜索组件,add-on bar 会得到一个 new add-on bar的组件,安装完后发现上面不显示ip, 后来才发现,应该安装Th ...

  9. 商业计算中Java高精度计算BigDecimal类

    <Effective Java> 第48条:如果需要精确的答案,请避免使用float和double. 如果我们编译运行下面这个程序会看到什么?public class Test{    p ...

  10. sql server 大数据跨服务器迁移表数据——使用链接服务器

    1.创建链接服务器(填写链接服务器.远程登录.使用密码) 2.188.188.1.177是远程的 select count(*) from [188.188.1.177].BigDataAnalysi ...