(爬)500px網站最受歡迎的照片

(爬)500px網站最受歡迎的照片

目標網址:https://500px.com/popular



分析網頁結構

進入開發者模式後按(1),再按(2),網頁往下拉會發現是動態
加載的形態,下拉的同時在NAME的方框中出現加載的訊息(3),
按(4)發現照片連結全列在其中。這樣就省去解析直接用json就可抓取
圖檔。

回到headers後,看一下目標網址,連結看看是不是json的格式呈現出來
















果然如此,那就好辦了。

主要抓取的網址在哪?

因為剛剛觀察到的是圖片加載的網址,那主要承載的網址在哪呢?
在頁面網下拉時觀察它會對應隨之出現的資訊,如下圖:

大紅框裡的就是主要抓取的網址

會用到的庫

import requests
from fake_useragent import UserAgent
from pprint import pprint
requests主要是抓取html網頁
fake_useragent主要是負責生成請求表頭,我們要使它隨機更換表頭,
才不會被封。
pprint就是把雜亂的json印出可以較好看些
我們用這種寫法讓它生成隨機表頭
ua=UserAgent(verify_ssl=False)
for i in range(1,100):
    headers={'User-Agent':
            ua.random}


截取JSON檔裡面的照片網址,在photos>image_url裡,它有0-10
那是同一張照片的不同像素,截取時可依自己喜愛更改。

完整程式碼:
import requests
from fake_useragent import UserAgent
from pprint import pprint

url='https://api.500px.com/v1/photos?rpp=50&feature=popular&image_size%5B%5D=1&image_size%5B%5D=2&image_size%5B%5D=32&image_size%5B%5D=31&image_size%5B%5D=33&image_size%5B%5D=34&image_size%5B%5D=35&image_size%5B%5D=36&image_size%5B%5D=2048&image_size%5B%5D=4&image_size%5B%5D=14&sort=&include_states=true&include_licensing=true&formats=jpeg%2Clytro&only=&exclude=&personalized_categories=&page=1&rpp=50'
ua=UserAgent(verify_ssl=False)
for i in range(1,100):
    headers={'User-Agent':
            ua.random}
num=0
html=requests.get(url, headers=headers).json()
photo=html['photos']
for p in photo:
    photos=p['image_url'][5#[5是照片相素,]
    imgurl=requests.get(photos, headers=headers)
    with open(r'D:\test\\'+str(num)+'.jpg''wb'as imgfiles:
        for desk in imgurl.iter_content(10240):
            imgfiles.write(desk)
    num+=1







留言

這個網誌中的熱門文章

(爬)微信公眾號上的圖片下載

(爬)康是美門市查詢並轉存csv