Jmeter(四十六) - 從入門到精通高階篇 - Jmeter之網頁圖片爬蟲-下篇(詳解教程)

巨集哥發表於2021-05-27

1.簡介

上一篇介紹了爬取文章,這一篇巨集哥就簡單的介紹一下,如何爬取圖片然後儲存到本地電腦中。網上很多漂亮的桌布或者是美女、妹子,想自己收藏一些,挨個儲存太費時間,那你可以利用爬蟲然後批量下載。

2.爬蟲原理

其實這個和上一篇都是一樣的道理,巨集哥在囉嗦一遍。Jmeter 的爬蟲原理其實很簡單,就是對網頁提交一個請求,然後把返回的所有 href 提取出來,利用 ForEach 控制器去實現 url 遍歷。這樣解釋是不是很清晰?下面巨集哥就來簡單介紹一下如何操作。

3.牛刀小試

巨集哥這裡以一個圖片網站為例給小夥伴或者童鞋們演示用過程和步驟。

該網站為動態。網址:https://unsplash.com/

3.1開始實戰

1、因為是動態網站,所以獲取網頁內容後,很多圖片找不到,使用瀏覽器F12功能,分析網站的請求,得出:

網頁動態載入請求:https://unsplash.com/napi/photos?page=1&per_page=12&order_by=latest,其中1,代表載入幾頁,12代表每次載入12張圖片;

圖片下載請求:https://unsplash.com/photos/xxx/download?force=true,其中xxx代表每個圖片的id。

2、我們開始使用jmeter爬取網站上的圖片。開啟Jemter,新建執行緒組,如下圖所示:

4、新增引數化檔案,配置元件->CSV資料檔案設定,設定檔案路徑,編碼、變數、間隔符等,如下圖所示:

5、我們現在需要把圖片id提取出來,利用強大的正規表示式提取。先分析下網頁請求返回的資料,因此巨集哥新增一個察看結果樹,執行Jmeter,如下圖所示:

6、返回結果,巨集哥貼上並且格式化,如下圖所示:

[{
    "id": "nV8K0uguyiw",
    "created_at": "2020-07-01T18:52:47-04:00",
    "updated_at": "2021-05-23T16:16:03-04:00",
    "promoted_at": null,
    "width": 10920,
    "height": 5880,
    "color": "#c0c0c0",
    "blur_hash": "LCFrS10evKpc.S0KM_-;^+E1E1%L",
    "description": null,
    "alt_description": "man in green zip up jacket beside woman in black shirt",
    "urls": {
        "raw": "https://images.unsplash.com/photo-1593643946890-b5b85ade6451?ixid=MnwxMjA3fDF8MXxhbGx8MXx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1",
        "full": "https://images.unsplash.com/photo-1593643946890-b5b85ade6451?crop=entropy\u0026cs=srgb\u0026fm=jpg\u0026ixid=MnwxMjA3fDF8MXxhbGx8MXx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=85",
        "regular": "https://images.unsplash.com/photo-1593643946890-b5b85ade6451?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDF8MXxhbGx8MXx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=1080",
        "small": "https://images.unsplash.com/photo-1593643946890-b5b85ade6451?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDF8MXxhbGx8MXx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=400",
        "thumb": "https://images.unsplash.com/photo-1593643946890-b5b85ade6451?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDF8MXxhbGx8MXx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=200"
    },
    "links": {
        "self": "https://api.unsplash.com/photos/nV8K0uguyiw",
        "html": "https://unsplash.com/photos/nV8K0uguyiw",
        "download": "https://unsplash.com/photos/nV8K0uguyiw/download",
        "download_location": "https://api.unsplash.com/photos/nV8K0uguyiw/download?ixid=MnwxMjA3fDF8MXxhbGx8MXx8fHx8fDJ8fDE2MjE4NDA5ODg"
    },
    "categories": [],
    "likes": 499,
    "liked_by_user": false,
    "current_user_collections": [],
    "sponsorship": {
        "impression_urls": ["https://secure.insightexpressai.com/adServer/adServerESI.aspx?script=false\u0026bannerID=8281547\u0026rnd=[timestamp]\u0026gdpr=\u0026gdpr_consent=\u0026redir=https://secure.insightexpressai.com/adserver/1pixel.gif", "https://secure.insightexpressai.com/adServer/adServerESI.aspx?script=false\u0026bannerID=8468538\u0026rnd=[timestamp]\u0026DID=mobADID\u0026redir=https://secure.insightexpressai.com/adserver/1pixel.gif"],
        "tagline": "Designed to be the Best",
        "tagline_url": "http://www.dell.com/xps",
        "sponsor": {
            "id": "2DC3GyeqWjI",
            "updated_at": "2021-05-24T03:12:03-04:00",
            "username": "xps",
            "name": "XPS",
            "first_name": "XPS",
            "last_name": null,
            "twitter_username": "Dell",
            "portfolio_url": "http://www.dell.com/xps",
            "bio": "Designed to be the best, with cutting edge technologies, exceptional build quality, unique materials and powerful features.",
            "location": null,
            "links": {
                "self": "https://api.unsplash.com/users/xps",
                "html": "https://unsplash.com/@xps",
                "photos": "https://api.unsplash.com/users/xps/photos",
                "likes": "https://api.unsplash.com/users/xps/likes",
                "portfolio": "https://api.unsplash.com/users/xps/portfolio",
                "following": "https://api.unsplash.com/users/xps/following",
                "followers": "https://api.unsplash.com/users/xps/followers"
            },
            "profile_image": {
                "small": "https://images.unsplash.com/profile-1600096866391-b09a1a53451aimage?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=32\u0026w=32",
                "medium": "https://images.unsplash.com/profile-1600096866391-b09a1a53451aimage?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=64\u0026w=64",
                "large": "https://images.unsplash.com/profile-1600096866391-b09a1a53451aimage?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=128\u0026w=128"
            },
            "instagram_username": "dell",
            "total_collections": 0,
            "total_likes": 0,
            "total_photos": 22,
            "accepted_tos": true,
            "for_hire": false
        }
    },
    "user": {
        "id": "2DC3GyeqWjI",
        "updated_at": "2021-05-24T03:12:03-04:00",
        "username": "xps",
        "name": "XPS",
        "first_name": "XPS",
        "last_name": null,
        "twitter_username": "Dell",
        "portfolio_url": "http://www.dell.com/xps",
        "bio": "Designed to be the best, with cutting edge technologies, exceptional build quality, unique materials and powerful features.",
        "location": null,
        "links": {
            "self": "https://api.unsplash.com/users/xps",
            "html": "https://unsplash.com/@xps",
            "photos": "https://api.unsplash.com/users/xps/photos",
            "likes": "https://api.unsplash.com/users/xps/likes",
            "portfolio": "https://api.unsplash.com/users/xps/portfolio",
            "following": "https://api.unsplash.com/users/xps/following",
            "followers": "https://api.unsplash.com/users/xps/followers"
        },
        "profile_image": {
            "small": "https://images.unsplash.com/profile-1600096866391-b09a1a53451aimage?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=32\u0026w=32",
            "medium": "https://images.unsplash.com/profile-1600096866391-b09a1a53451aimage?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=64\u0026w=64",
            "large": "https://images.unsplash.com/profile-1600096866391-b09a1a53451aimage?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=128\u0026w=128"
        },
        "instagram_username": "dell",
        "total_collections": 0,
        "total_likes": 0,
        "total_photos": 22,
        "accepted_tos": true,
        "for_hire": false
    }
}, {
    "id": "rfgR_SbTC40",
    "created_at": "2021-05-19T10:35:26-04:00",
    "updated_at": "2021-05-24T02:48:01-04:00",
    "promoted_at": "2021-05-24T02:48:01-04:00",
    "width": 3488,
    "height": 5232,
    "color": "#595959",
    "blur_hash": "LFBM*_nOt6tRt8%Ns:Rj0KtlM{Ri",
    "description": null,
    "alt_description": "black ceramic mug on table",
    "urls": {
        "raw": "https://images.unsplash.com/photo-1621434913400-21cc05e8c461?ixid=MnwxMjA3fDB8MXxhbGx8Mnx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1",
        "full": "https://images.unsplash.com/photo-1621434913400-21cc05e8c461?crop=entropy\u0026cs=srgb\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8Mnx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=85",
        "regular": "https://images.unsplash.com/photo-1621434913400-21cc05e8c461?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8Mnx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=1080",
        "small": "https://images.unsplash.com/photo-1621434913400-21cc05e8c461?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8Mnx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=400",
        "thumb": "https://images.unsplash.com/photo-1621434913400-21cc05e8c461?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8Mnx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=200"
    },
    "links": {
        "self": "https://api.unsplash.com/photos/rfgR_SbTC40",
        "html": "https://unsplash.com/photos/rfgR_SbTC40",
        "download": "https://unsplash.com/photos/rfgR_SbTC40/download",
        "download_location": "https://api.unsplash.com/photos/rfgR_SbTC40/download?ixid=MnwxMjA3fDB8MXxhbGx8Mnx8fHx8fDJ8fDE2MjE4NDA5ODg"
    },
    "categories": [],
    "likes": 9,
    "liked_by_user": false,
    "current_user_collections": [],
    "sponsorship": null,
    "user": {
        "id": "JF1D9mtlosI",
        "updated_at": "2021-05-24T02:57:03-04:00",
        "username": "farzadmohamadi",
        "name": "Farzad Mohamadi",
        "first_name": "Farzad",
        "last_name": "Mohamadi",
        "twitter_username": null,
        "portfolio_url": null,
        "bio": null,
        "location": null,
        "links": {
            "self": "https://api.unsplash.com/users/farzadmohamadi",
            "html": "https://unsplash.com/@farzadmohamadi",
            "photos": "https://api.unsplash.com/users/farzadmohamadi/photos",
            "likes": "https://api.unsplash.com/users/farzadmohamadi/likes",
            "portfolio": "https://api.unsplash.com/users/farzadmohamadi/portfolio",
            "following": "https://api.unsplash.com/users/farzadmohamadi/following",
            "followers": "https://api.unsplash.com/users/farzadmohamadi/followers"
        },
        "profile_image": {
            "small": "https://images.unsplash.com/profile-1621171864819-d610eadcd8bdimage?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=32\u0026w=32",
            "medium": "https://images.unsplash.com/profile-1621171864819-d610eadcd8bdimage?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=64\u0026w=64",
            "large": "https://images.unsplash.com/profile-1621171864819-d610eadcd8bdimage?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=128\u0026w=128"
        },
        "instagram_username": null,
        "total_collections": 0,
        "total_likes": 12,
        "total_photos": 9,
        "accepted_tos": true,
        "for_hire": false
    }
}, {
    "id": "cfMW036jByI",
    "created_at": "2020-05-06T15:53:04-04:00",
    "updated_at": "2021-05-24T01:27:02-04:00",
    "promoted_at": "2021-05-24T01:27:02-04:00",
    "width": 3456,
    "height": 5184,
    "color": "#8ca6d9",
    "blur_hash": "LN9a{zMvROjEo~tSV?RiH;x^V?e.",
    "description": null,
    "alt_description": "low angle photography of high rise building",
    "urls": {
        "raw": "https://images.unsplash.com/photo-1588794651085-41fe77330f3e?ixid=MnwxMjA3fDB8MXxhbGx8M3x8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1",
        "full": "https://images.unsplash.com/photo-1588794651085-41fe77330f3e?crop=entropy\u0026cs=srgb\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8M3x8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=85",
        "regular": "https://images.unsplash.com/photo-1588794651085-41fe77330f3e?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8M3x8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=1080",
        "small": "https://images.unsplash.com/photo-1588794651085-41fe77330f3e?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8M3x8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=400",
        "thumb": "https://images.unsplash.com/photo-1588794651085-41fe77330f3e?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8M3x8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=200"
    },
    "links": {
        "self": "https://api.unsplash.com/photos/cfMW036jByI",
        "html": "https://unsplash.com/photos/cfMW036jByI",
        "download": "https://unsplash.com/photos/cfMW036jByI/download",
        "download_location": "https://api.unsplash.com/photos/cfMW036jByI/download?ixid=MnwxMjA3fDB8MXxhbGx8M3x8fHx8fDJ8fDE2MjE4NDA5ODg"
    },
    "categories": [],
    "likes": 40,
    "liked_by_user": false,
    "current_user_collections": [],
    "sponsorship": null,
    "user": {
        "id": "ftB4m4H6ILo",
        "updated_at": "2021-05-24T03:02:09-04:00",
        "username": "hugoclb",
        "name": "Hugo Coulbouée",
        "first_name": "Hugo",
        "last_name": "Coulbouée",
        "twitter_username": "hug0clb",
        "portfolio_url": null,
        "bio": "ðï¸ Annecy, 74\r\nðð¼ââï¸ 19 Ans, Autodidacte  ð· Canon EOS 1200d x 50mm",
        "location": "Annecy",
        "links": {
            "self": "https://api.unsplash.com/users/hugoclb",
            "html": "https://unsplash.com/@hugoclb",
            "photos": "https://api.unsplash.com/users/hugoclb/photos",
            "likes": "https://api.unsplash.com/users/hugoclb/likes",
            "portfolio": "https://api.unsplash.com/users/hugoclb/portfolio",
            "following": "https://api.unsplash.com/users/hugoclb/following",
            "followers": "https://api.unsplash.com/users/hugoclb/followers"
        },
        "profile_image": {
            "small": "https://images.unsplash.com/profile-1588794575070-f8694808367aimage?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=32\u0026w=32",
            "medium": "https://images.unsplash.com/profile-1588794575070-f8694808367aimage?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=64\u0026w=64",
            "large": "https://images.unsplash.com/profile-1588794575070-f8694808367aimage?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=128\u0026w=128"
        },
        "instagram_username": "hugoclb",
        "total_collections": 0,
        "total_likes": 40,
        "total_photos": 39,
        "accepted_tos": true,
        "for_hire": true
    }
}, {
    "id": "ycnvnL4beLo",
    "created_at": "2021-05-23T14:11:36-04:00",
    "updated_at": "2021-05-24T00:30:02-04:00",
    "promoted_at": "2021-05-24T00:30:02-04:00",
    "width": 2160,
    "height": 3240,
    "color": "#d9d9c0",
    "blur_hash": "LcLpXC%LMxrr_MaexaR*%gRkS#bb",
    "description": null,
    "alt_description": "strawberry juice in clear drinking glass",
    "urls": {
        "raw": "https://images.unsplash.com/photo-1621792907789-666f0e69ea03?ixid=MnwxMjA3fDB8MXxhbGx8NHx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1",
        "full": "https://images.unsplash.com/photo-1621792907789-666f0e69ea03?crop=entropy\u0026cs=srgb\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8NHx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=85",
        "regular": "https://images.unsplash.com/photo-1621792907789-666f0e69ea03?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8NHx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=1080",
        "small": "https://images.unsplash.com/photo-1621792907789-666f0e69ea03?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8NHx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=400",
        "thumb": "https://images.unsplash.com/photo-1621792907789-666f0e69ea03?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8NHx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=200"
    },
    "links": {
        "self": "https://api.unsplash.com/photos/ycnvnL4beLo",
        "html": "https://unsplash.com/photos/ycnvnL4beLo",
        "download": "https://unsplash.com/photos/ycnvnL4beLo/download",
        "download_location": "https://api.unsplash.com/photos/ycnvnL4beLo/download?ixid=MnwxMjA3fDB8MXxhbGx8NHx8fHx8fDJ8fDE2MjE4NDA5ODg"
    },
    "categories": [],
    "likes": 22,
    "liked_by_user": false,
    "current_user_collections": [],
    "sponsorship": null,
    "user": {
        "id": "JUx0LN7P8_o",
        "updated_at": "2021-05-24T03:11:59-04:00",
        "username": "bartoshevicz",
        "name": "Adam Bartoszewicz",
        "first_name": "Adam",
        "last_name": "Bartoszewicz",
        "twitter_username": null,
        "portfolio_url": "https://www.instagram.com/bartoshevicz/",
        "bio": "Hi, I'm a foodie passionate and food photography is becoming my whole life! I hope you're gonna enjoy my delicious work. Join me on my Instagram profile for more and more!",
        "location": "BiaÅystok, Poland",
        "links": {
            "self": "https://api.unsplash.com/users/bartoshevicz",
            "html": "https://unsplash.com/@bartoshevicz",
            "photos": "https://api.unsplash.com/users/bartoshevicz/photos",
            "likes": "https://api.unsplash.com/users/bartoshevicz/likes",
            "portfolio": "https://api.unsplash.com/users/bartoshevicz/portfolio",
            "following": "https://api.unsplash.com/users/bartoshevicz/following",
            "followers": "https://api.unsplash.com/users/bartoshevicz/followers"
        },
        "profile_image": {
            "small": "https://images.unsplash.com/profile-1621607600495-1fd693951525image?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=32\u0026w=32",
            "medium": "https://images.unsplash.com/profile-1621607600495-1fd693951525image?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=64\u0026w=64",
            "large": "https://images.unsplash.com/profile-1621607600495-1fd693951525image?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=128\u0026w=128"
        },
        "instagram_username": "bartoshevicz",
        "total_collections": 0,
        "total_likes": 41,
        "total_photos": 26,
        "accepted_tos": true,
        "for_hire": false
    }
}, {
    "id": "5fx4r4qcdXA",
    "created_at": "2021-05-23T13:40:14-04:00",
    "updated_at": "2021-05-24T02:56:53-04:00",
    "promoted_at": "2021-05-24T00:27:02-04:00",
    "width": 5149,
    "height": 3433,
    "color": "#8c8c73",
    "blur_hash": "L9A0XYIC9dxt}@f9ohJA9aX8%1oe",
    "description": null,
    "alt_description": "white and blue smoke illustration",
    "urls": {
        "raw": "https://images.unsplash.com/photo-1621791554700-35b52803f596?ixid=MnwxMjA3fDB8MXxhbGx8NXx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1",
        "full": "https://images.unsplash.com/photo-1621791554700-35b52803f596?crop=entropy\u0026cs=srgb\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8NXx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=85",
        "regular": "https://images.unsplash.com/photo-1621791554700-35b52803f596?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8NXx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=1080",
        "small": "https://images.unsplash.com/photo-1621791554700-35b52803f596?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8NXx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=400",
        "thumb": "https://images.unsplash.com/photo-1621791554700-35b52803f596?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8NXx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=200"
    },
    "links": {
        "self": "https://api.unsplash.com/photos/5fx4r4qcdXA",
        "html": "https://unsplash.com/photos/5fx4r4qcdXA",
        "download": "https://unsplash.com/photos/5fx4r4qcdXA/download",
        "download_location": "https://api.unsplash.com/photos/5fx4r4qcdXA/download?ixid=MnwxMjA3fDB8MXxhbGx8NXx8fHx8fDJ8fDE2MjE4NDA5ODg"
    },
    "categories": [],
    "likes": 33,
    "liked_by_user": false,
    "current_user_collections": [],
    "sponsorship": null,
    "user": {
        "id": "ogQykx6hk_c",
        "updated_at": "2021-05-24T03:22:05-04:00",
        "username": "pawel_czerwinski",
        "name": "Pawel Czerwinski",
        "first_name": "Pawel",
        "last_name": "Czerwinski",
        "twitter_username": null,
        "portfolio_url": "http://paypal.me/pmcze",
        "bio": "If you'd like to support me, you can consider a donation ⤠In case you have any questions about how you can use the photos, please read https://help.unsplash.com/en/collections/1463188-unsplash-license ð ||| www.instagram.com/pmcze",
        "location": "Poland",
        "links": {
            "self": "https://api.unsplash.com/users/pawel_czerwinski",
            "html": "https://unsplash.com/@pawel_czerwinski",
            "photos": "https://api.unsplash.com/users/pawel_czerwinski/photos",
            "likes": "https://api.unsplash.com/users/pawel_czerwinski/likes",
            "portfolio": "https://api.unsplash.com/users/pawel_czerwinski/portfolio",
            "following": "https://api.unsplash.com/users/pawel_czerwinski/following",
            "followers": "https://api.unsplash.com/users/pawel_czerwinski/followers"
        },
        "profile_image": {
            "small": "https://images.unsplash.com/profile-1592328433409-d9ce8a5333eaimage?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=32\u0026w=32",
            "medium": "https://images.unsplash.com/profile-1592328433409-d9ce8a5333eaimage?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=64\u0026w=64",
            "large": "https://images.unsplash.com/profile-1592328433409-d9ce8a5333eaimage?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=128\u0026w=128"
        },
        "instagram_username": "pmcze",
        "total_collections": 21,
        "total_likes": 29930,
        "total_photos": 1118,
        "accepted_tos": true,
        "for_hire": false
    }
}, {
    "id": "DTPY6b0RMRk",
    "created_at": "2021-05-21T00:09:13-04:00",
    "updated_at": "2021-05-24T00:50:37-04:00",
    "promoted_at": null,
    "width": 8688,
    "height": 5792,
    "color": "#f3f3f3",
    "blur_hash": "LeH2cgIUs:-:~qofRjt7xctQWAWC",
    "description": null,
    "alt_description": "woman using Surface laptop",
    "urls": {
        "raw": "https://images.unsplash.com/photo-1621570072965-b25917de6ec9?ixid=MnwxMjA3fDF8MXxhbGx8Nnx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1",
        "full": "https://images.unsplash.com/photo-1621570072965-b25917de6ec9?crop=entropy\u0026cs=srgb\u0026fm=jpg\u0026ixid=MnwxMjA3fDF8MXxhbGx8Nnx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=85",
        "regular": "https://images.unsplash.com/photo-1621570072965-b25917de6ec9?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDF8MXxhbGx8Nnx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=1080",
        "small": "https://images.unsplash.com/photo-1621570072965-b25917de6ec9?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDF8MXxhbGx8Nnx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=400",
        "thumb": "https://images.unsplash.com/photo-1621570072965-b25917de6ec9?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDF8MXxhbGx8Nnx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=200"
    },
    "links": {
        "self": "https://api.unsplash.com/photos/DTPY6b0RMRk",
        "html": "https://unsplash.com/photos/DTPY6b0RMRk",
        "download": "https://unsplash.com/photos/DTPY6b0RMRk/download",
        "download_location": "https://api.unsplash.com/photos/DTPY6b0RMRk/download?ixid=MnwxMjA3fDF8MXxhbGx8Nnx8fHx8fDJ8fDE2MjE4NDA5ODg"
    },
    "categories": [],
    "likes": 5,
    "liked_by_user": false,
    "current_user_collections": [],
    "sponsorship": {
        "impression_urls": ["https://secure.insightexpressai.com/adServer/adServerESI.aspx?script=false\u0026bannerID=8742296\u0026rnd=[timestamp]\u0026redir=https://secure.insightexpressai.com/adserver/1pixel.gif"],
        "tagline": "Original by design",
        "tagline_url": null,
        "sponsor": {
            "id": "N-JSeSTCz68",
            "updated_at": "2021-05-24T02:56:58-04:00",
            "username": "surface",
            "name": "Surface",
            "first_name": "Surface",
            "last_name": null,
            "twitter_username": "surface",
            "portfolio_url": "http://surface.com",
            "bio": "Follow us @Surface. #OriginalByDesign",
            "location": null,
            "links": {
                "self": "https://api.unsplash.com/users/surface",
                "html": "https://unsplash.com/@surface",
                "photos": "https://api.unsplash.com/users/surface/photos",
                "likes": "https://api.unsplash.com/users/surface/likes",
                "portfolio": "https://api.unsplash.com/users/surface/portfolio",
                "following": "https://api.unsplash.com/users/surface/following",
                "followers": "https://api.unsplash.com/users/surface/followers"
            },
            "profile_image": {
                "small": "https://images.unsplash.com/profile-1587651800415-20eed2ec0209image?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=32\u0026w=32",
                "medium": "https://images.unsplash.com/profile-1587651800415-20eed2ec0209image?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=64\u0026w=64",
                "large": "https://images.unsplash.com/profile-1587651800415-20eed2ec0209image?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=128\u0026w=128"
            },
            "instagram_username": "surface",
            "total_collections": 0,
            "total_likes": 0,
            "total_photos": 141,
            "accepted_tos": true,
            "for_hire": false
        }
    },
    "user": {
        "id": "N-JSeSTCz68",
        "updated_at": "2021-05-24T02:56:58-04:00",
        "username": "surface",
        "name": "Surface",
        "first_name": "Surface",
        "last_name": null,
        "twitter_username": "surface",
        "portfolio_url": "http://surface.com",
        "bio": "Follow us @Surface. #OriginalByDesign",
        "location": null,
        "links": {
            "self": "https://api.unsplash.com/users/surface",
            "html": "https://unsplash.com/@surface",
            "photos": "https://api.unsplash.com/users/surface/photos",
            "likes": "https://api.unsplash.com/users/surface/likes",
            "portfolio": "https://api.unsplash.com/users/surface/portfolio",
            "following": "https://api.unsplash.com/users/surface/following",
            "followers": "https://api.unsplash.com/users/surface/followers"
        },
        "profile_image": {
            "small": "https://images.unsplash.com/profile-1587651800415-20eed2ec0209image?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=32\u0026w=32",
            "medium": "https://images.unsplash.com/profile-1587651800415-20eed2ec0209image?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=64\u0026w=64",
            "large": "https://images.unsplash.com/profile-1587651800415-20eed2ec0209image?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=128\u0026w=128"
        },
        "instagram_username": "surface",
        "total_collections": 0,
        "total_likes": 0,
        "total_photos": 141,
        "accepted_tos": true,
        "for_hire": false
    }
}, {
    "id": "TxgPq_TRXtQ",
    "created_at": "2021-05-22T16:33:09-04:00",
    "updated_at": "2021-05-23T23:57:01-04:00",
    "promoted_at": "2021-05-23T23:57:01-04:00",
    "width": 1889,
    "height": 2700,
    "color": "#26260c",
    "blur_hash": "LEC7TPl9tkNe-oi^tkoy?]IBIBxt",
    "description": null,
    "alt_description": "black and brown car steering wheel",
    "urls": {
        "raw": "https://images.unsplash.com/photo-1621715070889-7bcdef6fdcf9?ixid=MnwxMjA3fDB8MXxhbGx8N3x8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1",
        "full": "https://images.unsplash.com/photo-1621715070889-7bcdef6fdcf9?crop=entropy\u0026cs=srgb\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8N3x8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=85",
        "regular": "https://images.unsplash.com/photo-1621715070889-7bcdef6fdcf9?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8N3x8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=1080",
        "small": "https://images.unsplash.com/photo-1621715070889-7bcdef6fdcf9?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8N3x8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=400",
        "thumb": "https://images.unsplash.com/photo-1621715070889-7bcdef6fdcf9?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8N3x8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=200"
    },
    "links": {
        "self": "https://api.unsplash.com/photos/TxgPq_TRXtQ",
        "html": "https://unsplash.com/photos/TxgPq_TRXtQ",
        "download": "https://unsplash.com/photos/TxgPq_TRXtQ/download",
        "download_location": "https://api.unsplash.com/photos/TxgPq_TRXtQ/download?ixid=MnwxMjA3fDB8MXxhbGx8N3x8fHx8fDJ8fDE2MjE4NDA5ODg"
    },
    "categories": [],
    "likes": 23,
    "liked_by_user": false,
    "current_user_collections": [],
    "sponsorship": null,
    "user": {
        "id": "bCBUCaMNruM",
        "updated_at": "2021-05-24T03:12:07-04:00",
        "username": "kapsan",
        "name": "Christian Casapu",
        "first_name": "Christian",
        "last_name": "Casapu",
        "twitter_username": null,
        "portfolio_url": null,
        "bio": null,
        "location": "Chisinau, R.Moldova",
        "links": {
            "self": "https://api.unsplash.com/users/kapsan",
            "html": "https://unsplash.com/@kapsan",
            "photos": "https://api.unsplash.com/users/kapsan/photos",
            "likes": "https://api.unsplash.com/users/kapsan/likes",
            "portfolio": "https://api.unsplash.com/users/kapsan/portfolio",
            "following": "https://api.unsplash.com/users/kapsan/following",
            "followers": "https://api.unsplash.com/users/kapsan/followers"
        },
        "profile_image": {
            "small": "https://images.unsplash.com/profile-1579130062098-16c790ae3ccdimage?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=32\u0026w=32",
            "medium": "https://images.unsplash.com/profile-1579130062098-16c790ae3ccdimage?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=64\u0026w=64",
            "large": "https://images.unsplash.com/profile-1579130062098-16c790ae3ccdimage?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=128\u0026w=128"
        },
        "instagram_username": "kapsann",
        "total_collections": 0,
        "total_likes": 37,
        "total_photos": 10,
        "accepted_tos": true,
        "for_hire": true
    }
}, {
    "id": "m3mYumV2lag",
    "created_at": "2021-05-23T12:32:40-04:00",
    "updated_at": "2021-05-23T23:03:01-04:00",
    "promoted_at": "2021-05-23T23:03:01-04:00",
    "width": 3690,
    "height": 5535,
    "color": "#f3f3f3",
    "blur_hash": "L]JuP^t6a#j]_4s:j@a}oJs:jZWV",
    "description": "Three men standing in green field in front of Grand Teton mountain range",
    "alt_description": null,
    "urls": {
        "raw": "https://images.unsplash.com/photo-1621787211915-83d2cbcf8946?ixid=MnwxMjA3fDB8MXxhbGx8OHx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1",
        "full": "https://images.unsplash.com/photo-1621787211915-83d2cbcf8946?crop=entropy\u0026cs=srgb\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8OHx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=85",
        "regular": "https://images.unsplash.com/photo-1621787211915-83d2cbcf8946?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8OHx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=1080",
        "small": "https://images.unsplash.com/photo-1621787211915-83d2cbcf8946?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8OHx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=400",
        "thumb": "https://images.unsplash.com/photo-1621787211915-83d2cbcf8946?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8OHx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=200"
    },
    "links": {
        "self": "https://api.unsplash.com/photos/m3mYumV2lag",
        "html": "https://unsplash.com/photos/m3mYumV2lag",
        "download": "https://unsplash.com/photos/m3mYumV2lag/download",
        "download_location": "https://api.unsplash.com/photos/m3mYumV2lag/download?ixid=MnwxMjA3fDB8MXxhbGx8OHx8fHx8fDJ8fDE2MjE4NDA5ODg"
    },
    "categories": [],
    "likes": 20,
    "liked_by_user": false,
    "current_user_collections": [],
    "sponsorship": null,
    "user": {
        "id": "MpbJ8qGW8bo",
        "updated_at": "2021-05-24T03:02:11-04:00",
        "username": "jonahbrown",
        "name": "Jonah Brown",
        "first_name": "Jonah",
        "last_name": "Brown",
        "twitter_username": "jonahbrown24",
        "portfolio_url": "https://www.youtube.com/channel/UCxkaphHTf-hlcrh6-Q6FPLg/videos",
        "bio": "Michigan based filmmaker that likes to snap photos between takes.",
        "location": "Kalamazoo, MI",
        "links": {
            "self": "https://api.unsplash.com/users/jonahbrown",
            "html": "https://unsplash.com/@jonahbrown",
            "photos": "https://api.unsplash.com/users/jonahbrown/photos",
            "likes": "https://api.unsplash.com/users/jonahbrown/likes",
            "portfolio": "https://api.unsplash.com/users/jonahbrown/portfolio",
            "following": "https://api.unsplash.com/users/jonahbrown/following",
            "followers": "https://api.unsplash.com/users/jonahbrown/followers"
        },
        "profile_image": {
            "small": "https://images.unsplash.com/profile-1605920877157-3a1ac2126072image?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=32\u0026w=32",
            "medium": "https://images.unsplash.com/profile-1605920877157-3a1ac2126072image?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=64\u0026w=64",
            "large": "https://images.unsplash.com/profile-1605920877157-3a1ac2126072image?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=128\u0026w=128"
        },
        "instagram_username": "joenuh",
        "total_collections": 0,
        "total_likes": 5,
        "total_photos": 124,
        "accepted_tos": true,
        "for_hire": true
    }
}, {
    "id": "Pu9uW0IHNEg",
    "created_at": "2021-05-22T16:47:43-04:00",
    "updated_at": "2021-05-24T03:21:57-04:00",
    "promoted_at": "2021-05-23T20:36:01-04:00",
    "width": 3225,
    "height": 4837,
    "color": "#f3f3f3",
    "blur_hash": "LvNA6m-;M{of9FR%R%WB0JofxbWB",
    "description": null,
    "alt_description": "woman in brown jacket standing beside white wall",
    "urls": {
        "raw": "https://images.unsplash.com/photo-1621716456281-f6d0ce70764f?ixid=MnwxMjA3fDB8MXxhbGx8OXx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1",
        "full": "https://images.unsplash.com/photo-1621716456281-f6d0ce70764f?crop=entropy\u0026cs=srgb\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8OXx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=85",
        "regular": "https://images.unsplash.com/photo-1621716456281-f6d0ce70764f?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8OXx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=1080",
        "small": "https://images.unsplash.com/photo-1621716456281-f6d0ce70764f?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8OXx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=400",
        "thumb": "https://images.unsplash.com/photo-1621716456281-f6d0ce70764f?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8OXx8fHx8fDJ8fDE2MjE4NDA5ODg\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=200"
    },
    "links": {
        "self": "https://api.unsplash.com/photos/Pu9uW0IHNEg",
        "html": "https://unsplash.com/photos/Pu9uW0IHNEg",
        "download": "https://unsplash.com/photos/Pu9uW0IHNEg/download",
        "download_location": "https://api.unsplash.com/photos/Pu9uW0IHNEg/download?ixid=MnwxMjA3fDB8MXxhbGx8OXx8fHx8fDJ8fDE2MjE4NDA5ODg"
    },
    "categories": [],
    "likes": 17,
    "liked_by_user": false,
    "current_user_collections": [],
    "sponsorship": null,
    "user": {
        "id": "ftB4m4H6ILo",
        "updated_at": "2021-05-24T03:02:09-04:00",
        "username": "hugoclb",
        "name": "Hugo Coulbouée",
        "first_name": "Hugo",
        "last_name": "Coulbouée",
        "twitter_username": "hug0clb",
        "portfolio_url": null,
        "bio": "ðï¸ Annecy, 74\r\nðð¼ââï¸ 19 Ans, Autodidacte  ð· Canon EOS 1200d x 50mm",
        "location": "Annecy",
        "links": {
            "self": "https://api.unsplash.com/users/hugoclb",
            "html": "https://unsplash.com/@hugoclb",
            "photos": "https://api.unsplash.com/users/hugoclb/photos",
            "likes": "https://api.unsplash.com/users/hugoclb/likes",
            "portfolio": "https://api.unsplash.com/users/hugoclb/portfolio",
            "following": "https://api.unsplash.com/users/hugoclb/following",
            "followers": "https://api.unsplash.com/users/hugoclb/followers"
        },
        "profile_image": {
            "small": "https://images.unsplash.com/profile-1588794575070-f8694808367aimage?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=32\u0026w=32",
            "medium": "https://images.unsplash.com/profile-1588794575070-f8694808367aimage?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=64\u0026w=64",
            "large": "https://images.unsplash.com/profile-1588794575070-f8694808367aimage?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=128\u0026w=128"
        },
        "instagram_username": "hugoclb",
        "total_collections": 0,
        "total_likes": 40,
        "total_photos": 39,
        "accepted_tos": true,
        "for_hire": true
    }
}, {
    "id": "G_iXK9l8l7Q",
    "created_at": "2021-05-21T14:20:27-04:00",
    "updated_at": "2021-05-23T20:21:02-04:00",
    "promoted_at": "2021-05-23T20:21:02-04:00",
    "width": 3998,
    "height": 4997,
    "color": "#262626",
    "blur_hash": "LUA^UYt7Rjxu_NofRjxu_3ofV@t7",
    "description": null,
    "alt_description": "green trees on brown wooden bridge during daytime",
    "urls": {
        "raw": "https://images.unsplash.com/photo-1621620844630-ecd55a95b7ff?ixid=MnwxMjA3fDB8MXxhbGx8MTB8fHx8fHwyfHwxNjIxODQwOTg4\u0026ixlib=rb-1.2.1",
        "full": "https://images.unsplash.com/photo-1621620844630-ecd55a95b7ff?crop=entropy\u0026cs=srgb\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8MTB8fHx8fHwyfHwxNjIxODQwOTg4\u0026ixlib=rb-1.2.1\u0026q=85",
        "regular": "https://images.unsplash.com/photo-1621620844630-ecd55a95b7ff?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8MTB8fHx8fHwyfHwxNjIxODQwOTg4\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=1080",
        "small": "https://images.unsplash.com/photo-1621620844630-ecd55a95b7ff?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8MTB8fHx8fHwyfHwxNjIxODQwOTg4\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=400",
        "thumb": "https://images.unsplash.com/photo-1621620844630-ecd55a95b7ff?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8MTB8fHx8fHwyfHwxNjIxODQwOTg4\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=200"
    },
    "links": {
        "self": "https://api.unsplash.com/photos/G_iXK9l8l7Q",
        "html": "https://unsplash.com/photos/G_iXK9l8l7Q",
        "download": "https://unsplash.com/photos/G_iXK9l8l7Q/download",
        "download_location": "https://api.unsplash.com/photos/G_iXK9l8l7Q/download?ixid=MnwxMjA3fDB8MXxhbGx8MTB8fHx8fHwyfHwxNjIxODQwOTg4"
    },
    "categories": [],
    "likes": 43,
    "liked_by_user": false,
    "current_user_collections": [],
    "sponsorship": null,
    "user": {
        "id": "piOet34tl5o",
        "updated_at": "2021-05-24T03:07:10-04:00",
        "username": "nathanmcdine",
        "name": "Nathan McDine",
        "first_name": "Nathan",
        "last_name": "McDine",
        "twitter_username": "nathanmcdine",
        "portfolio_url": "https://www.nathanmcdine.co.uk",
        "bio": "Photographer | Marketer ð¸\r\n If you like my content, be sure to check out my Instagram (@nathanmcdine).",
        "location": "UK",
        "links": {
            "self": "https://api.unsplash.com/users/nathanmcdine",
            "html": "https://unsplash.com/@nathanmcdine",
            "photos": "https://api.unsplash.com/users/nathanmcdine/photos",
            "likes": "https://api.unsplash.com/users/nathanmcdine/likes",
            "portfolio": "https://api.unsplash.com/users/nathanmcdine/portfolio",
            "following": "https://api.unsplash.com/users/nathanmcdine/following",
            "followers": "https://api.unsplash.com/users/nathanmcdine/followers"
        },
        "profile_image": {
            "small": "https://images.unsplash.com/profile-1621620707567-e2050adbc1eaimage?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=32\u0026w=32",
            "medium": "https://images.unsplash.com/profile-1621620707567-e2050adbc1eaimage?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=64\u0026w=64",
            "large": "https://images.unsplash.com/profile-1621620707567-e2050adbc1eaimage?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=128\u0026w=128"
        },
        "instagram_username": "nathanmcdine",
        "total_collections": 2,
        "total_likes": 245,
        "total_photos": 143,
        "accepted_tos": true,
        "for_hire": true
    }
}, {
    "id": "k94wMXMHFbE",
    "created_at": "2021-05-23T01:27:15-04:00",
    "updated_at": "2021-05-24T01:25:07-04:00",
    "promoted_at": "2021-05-23T20:06:02-04:00",
    "width": 5584,
    "height": 8368,
    "color": "#d9d9d9",
    "blur_hash": "LvHMDpM{j]ay_4RkbFj[X9W=ayay",
    "description": null,
    "alt_description": "green lake near mountain during daytime",
    "urls": {
        "raw": "https://images.unsplash.com/photo-1621747609281-38853764c986?ixid=MnwxMjA3fDB8MXxhbGx8MTF8fHx8fHwyfHwxNjIxODQwOTg4\u0026ixlib=rb-1.2.1",
        "full": "https://images.unsplash.com/photo-1621747609281-38853764c986?crop=entropy\u0026cs=srgb\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8MTF8fHx8fHwyfHwxNjIxODQwOTg4\u0026ixlib=rb-1.2.1\u0026q=85",
        "regular": "https://images.unsplash.com/photo-1621747609281-38853764c986?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8MTF8fHx8fHwyfHwxNjIxODQwOTg4\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=1080",
        "small": "https://images.unsplash.com/photo-1621747609281-38853764c986?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8MTF8fHx8fHwyfHwxNjIxODQwOTg4\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=400",
        "thumb": "https://images.unsplash.com/photo-1621747609281-38853764c986?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8MTF8fHx8fHwyfHwxNjIxODQwOTg4\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=200"
    },
    "links": {
        "self": "https://api.unsplash.com/photos/k94wMXMHFbE",
        "html": "https://unsplash.com/photos/k94wMXMHFbE",
        "download": "https://unsplash.com/photos/k94wMXMHFbE/download",
        "download_location": "https://api.unsplash.com/photos/k94wMXMHFbE/download?ixid=MnwxMjA3fDB8MXxhbGx8MTF8fHx8fHwyfHwxNjIxODQwOTg4"
    },
    "categories": [],
    "likes": 63,
    "liked_by_user": false,
    "current_user_collections": [],
    "sponsorship": null,
    "user": {
        "id": "NyI9CHJbx1I",
        "updated_at": "2021-05-24T03:02:12-04:00",
        "username": "visuallert",
        "name": "Jonas Allert",
        "first_name": "Jonas",
        "last_name": "Allert",
        "twitter_username": null,
        "portfolio_url": "http://visenda.com",
        "bio": "hi, I'm looking forward to share awesomeness here!",
        "location": "ulm, germany",
        "links": {
            "self": "https://api.unsplash.com/users/visuallert",
            "html": "https://unsplash.com/@visuallert",
            "photos": "https://api.unsplash.com/users/visuallert/photos",
            "likes": "https://api.unsplash.com/users/visuallert/likes",
            "portfolio": "https://api.unsplash.com/users/visuallert/portfolio",
            "following": "https://api.unsplash.com/users/visuallert/following",
            "followers": "https://api.unsplash.com/users/visuallert/followers"
        },
        "profile_image": {
            "small": "https://images.unsplash.com/profile-1601380918797-a7236651e5f0image?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=32\u0026w=32",
            "medium": "https://images.unsplash.com/profile-1601380918797-a7236651e5f0image?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=64\u0026w=64",
            "large": "https://images.unsplash.com/profile-1601380918797-a7236651e5f0image?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=128\u0026w=128"
        },
        "instagram_username": "visuallert",
        "total_collections": 3,
        "total_likes": 124,
        "total_photos": 120,
        "accepted_tos": true,
        "for_hire": true
    }
}, {
    "id": "rMXsuun3CuQ",
    "created_at": "2021-05-20T11:09:09-04:00",
    "updated_at": "2021-05-23T20:00:01-04:00",
    "promoted_at": "2021-05-23T20:00:01-04:00",
    "width": 6720,
    "height": 4480,
    "color": "#d9a6a6",
    "blur_hash": "LIKc*1wG0f9s^hVr-oxrScWBr=t3",
    "description": null,
    "alt_description": null,
    "urls": {
        "raw": "https://images.unsplash.com/photo-1621523133136-cea844f32bdf?ixid=MnwxMjA3fDB8MXxhbGx8MTJ8fHx8fHwyfHwxNjIxODQwOTg4\u0026ixlib=rb-1.2.1",
        "full": "https://images.unsplash.com/photo-1621523133136-cea844f32bdf?crop=entropy\u0026cs=srgb\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8MTJ8fHx8fHwyfHwxNjIxODQwOTg4\u0026ixlib=rb-1.2.1\u0026q=85",
        "regular": "https://images.unsplash.com/photo-1621523133136-cea844f32bdf?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8MTJ8fHx8fHwyfHwxNjIxODQwOTg4\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=1080",
        "small": "https://images.unsplash.com/photo-1621523133136-cea844f32bdf?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8MTJ8fHx8fHwyfHwxNjIxODQwOTg4\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=400",
        "thumb": "https://images.unsplash.com/photo-1621523133136-cea844f32bdf?crop=entropy\u0026cs=tinysrgb\u0026fit=max\u0026fm=jpg\u0026ixid=MnwxMjA3fDB8MXxhbGx8MTJ8fHx8fHwyfHwxNjIxODQwOTg4\u0026ixlib=rb-1.2.1\u0026q=80\u0026w=200"
    },
    "links": {
        "self": "https://api.unsplash.com/photos/rMXsuun3CuQ",
        "html": "https://unsplash.com/photos/rMXsuun3CuQ",
        "download": "https://unsplash.com/photos/rMXsuun3CuQ/download",
        "download_location": "https://api.unsplash.com/photos/rMXsuun3CuQ/download?ixid=MnwxMjA3fDB8MXxhbGx8MTJ8fHx8fHwyfHwxNjIxODQwOTg4"
    },
    "categories": [],
    "likes": 20,
    "liked_by_user": false,
    "current_user_collections": [],
    "sponsorship": null,
    "user": {
        "id": "M8EEMP5UPD8",
        "updated_at": "2021-05-24T02:41:56-04:00",
        "username": "colincyruz",
        "name": "Colin Michel",
        "first_name": "Colin",
        "last_name": "Michel",
        "twitter_username": null,
        "portfolio_url": null,
        "bio": null,
        "location": null,
        "links": {
            "self": "https://api.unsplash.com/users/colincyruz",
            "html": "https://unsplash.com/@colincyruz",
            "photos": "https://api.unsplash.com/users/colincyruz/photos",
            "likes": "https://api.unsplash.com/users/colincyruz/likes",
            "portfolio": "https://api.unsplash.com/users/colincyruz/portfolio",
            "following": "https://api.unsplash.com/users/colincyruz/following",
            "followers": "https://api.unsplash.com/users/colincyruz/followers"
        },
        "profile_image": {
            "small": "https://images.unsplash.com/profile-fb-1621522556-3815074e04d0.jpg?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=32\u0026w=32",
            "medium": "https://images.unsplash.com/profile-fb-1621522556-3815074e04d0.jpg?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=64\u0026w=64",
            "large": "https://images.unsplash.com/profile-fb-1621522556-3815074e04d0.jpg?ixlib=rb-1.2.1\u0026q=80\u0026fm=jpg\u0026crop=faces\u0026cs=tinysrgb\u0026fit=crop\u0026h=128\u0026w=128"
        },
        "instagram_username": null,
        "total_collections": 0,
        "total_likes": 0,
        "total_photos": 9,
        "accepted_tos": true,
        "for_hire": false
    }
}]

6、從上邊返回的是json格式,第一個id就是圖片id。我們可以利用id提取資料,"id":"(.*?)",括號裡就是需要提取的資料。如下圖所示:

7、從上圖我們可以清楚地看出正則匹配的總數是26,遠遠超過了圖片總數12張,因此提取的還有其他的id。我們繼續分析,看到在user裡也有一個id,這個id並不是圖片的id,用這個id去下載圖片,會報404錯誤,我們用剛才的正則會把這個id提取出來。繼續分析資料,發現download連結,沒個圖片除了id不一樣,其他都一樣,user裡沒有這個連結,我們用這個連結提取資料 "download":"https://unsplash.com/photos/(.*?)/download。如下圖所示:

8、從上圖我們看到提取匹配總數是12,正確,因此我們需要新增一個正則提取器,將以上的正規表示式填寫到正則提取器中,記得匹配數字填-1,把所有匹配的都提取出來,如下圖所示:

9、我們新增一個sampler->Debug Sampler,檢視一下是否真的取出我們想要的資料了,如下圖所示:

10、儲存後,執行Jmeter,點選察看結果樹,檢視取出的資料,說明id已經被我們取出來了,如下圖所示:

11、接下來需要用我們的foreach控制器了 ,對所有的id進行遍歷,在控制器裡輸入變數名稱,就是正規表示式裡的變數名,如下圖所示:

12、在foreach控制器下面再新增一個http請求,用於下載圖片  ,就是我們開頭寫明的下載圖片請求,設定與第一個http請求一致,記得將id引數化,用表示式裡變數名即可,如下圖所示:

13、傳送圖片下載請求後,我們使用beanshell將圖片儲存到本地,在請求下,新增後置處理器->BeanShell PostProcessor,編寫儲存圖片指令碼,如下圖所示:

14、儲存圖片指令碼參考程式碼如下:

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;

Date date = new Date();
date.getDate();
SimpleDateFormat df = new SimpleDateFormat("yyyymmdd-HHmmss");
String formate = df.format(date);
//string name = vars.get("imgid");
byte[] result = prev.getResponseData();  //這個是獲取到請求返回的資料,prev是獲取上個請求的返回
String file_name = "E:\\photos\\" + formate + ".jpg"; //代表存放檔案的位置和檔名
File file = new File(file_name);
FileOutputStream out = new FileOutputStream(file);
out.write(result);
out.close();

15、下面我們就可以見證奇蹟的時刻了,執行完畢後,察看結果樹可以看到執行結果,存放路徑中,可以看到下載的圖片了,如下圖所示:

4.小結

1.在儲存到本地圖片要建立你程式碼裡寫的路徑,或者程式碼中判斷有就不建立,沒有就建立。
2.主要你的正規表示式是否真的提取到了你需要的資料。
3.細心地小夥伴看到我這裡只有12張,但是引數可以迴圈3次,36張,這是怎麼回事了,那是因為巨集哥的執行緒組是1,所以就是12張了。
4.熟練地掌握正規表示式的用法。這裡最重要的一步就是正規表示式提取我們想要的關鍵資料

好了,關於Jmeter爬蟲就到這裡吧,其實和上一篇的內容也差不多少。

相關文章