欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

17-用python爬取下載女神照片 - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開發(fā)/軟件開發(fā)

知識

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們在追求其視覺表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營銷的便利,運(yùn)營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏壧峁┍憬莸闹С郑?

您當(dāng)前位置>首頁 » 新聞資訊 » 技術(shù)分享 >

17-用python爬取下載女神照片

發(fā)表時(shí)間:2020-10-13

發(fā)布人:葵宇科技

瀏覽次數(shù):60

今天咱們要爬取花瓣網(wǎng) https://huaban.com/
設(shè)計(jì)師尋找靈感的天堂!有海量的圖片素材可以下載,是一個(gè)優(yōu)質(zhì)圖片靈感庫

這次我們用 requests 登錄花瓣網(wǎng),爬取頁面,再用正則與json提取有用信息,最后把獲取的圖片信息 保存到本地

一 、用到技術(shù)

  • python 基礎(chǔ)
  • requests 登錄頁面獲取session用戶會(huì)話,下載圖片
  • 正則表達(dá)式 提取頁面的有用信息
  • json解析頁面中的圖片

二、 目標(biāo)頁面

https://huaban.com/search/?q=女神&category=photography
女神

三、結(jié)果

結(jié)果

四、安裝 必要的庫

  • win+R 打開運(yùn)行
  • 輸出cmd 進(jìn)入控制臺
  • 分別安裝requests
pip install  requests 

五、分析頁面

  1. 頁面規(guī)律
    我們單擊分頁按鈕,拿到頁面最后一個(gè)參數(shù)的規(guī)律
    第一頁:https://huaban.com/search/?q=女神&category=photography&page=1
    第二頁:https://huaban.com/search/?q=女神&category=photography&page=2

2.登錄
需要登錄

通過Fiddler我們查看到登錄請求的地址和參數(shù)

# 地址
https://huaban.com/auth/
# 參數(shù)
 "email": "******",
 "password": "*****",
 "_ref":"frame"

我決定使用requestssession()功能來獲取用戶登錄后的會(huì)話session信息

3. 頁面信息

我們通過右鍵查看源代碼發(fā)現(xiàn)數(shù)據(jù)是保存在javascript里面的我們準(zhǔn)備用正則表達(dá)式提取頁面信息
圖片信息數(shù)據(jù)

六、全部代碼

#-*- coding:utf-8 -*-
import requests
import re
import json
# 導(dǎo)入 requests  re正則 json

'''
login
登錄花瓣 獲取session
'''
def login():
    login_url = 'https://huaban.com/auth/'
    # 登錄地址
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0",
        "Accept": "application / json",
        "Content-type": "application/x-www-form-urlencoded; charset=utf-8",
        "Referer": "https://huaban.com/",
    }
    # 請求頭信息

    session = requests.session()
    #sesson 會(huì)話

    login_data = {
        "email": "zengmumu%40126.com",
        "password": "zmm123",
        "_ref":"frame"
    }

    response = session.post(login_url, data=login_data, headers=headers,verify=False)
    # 登錄頁面
    getPic(session,5)
    # 獲取圖片,前5頁


'''
getPic
解析頁面中的圖片地址
session 會(huì)話信息
num     最大是頁數(shù)
'''
def getPic(session,num):
    for i in range(1,num+1):
        response = session.get("https://huaban.com/search/?q=%E5%A5%B3%E7%A5%9E&category=photography&page="+str(i))
        # 獲取頁面信息("美女"文字編碼后的結(jié)果是"%E5%A5%B3%E7%A5%9E" )
        data = re.search('app\.page\[\"pins\"\] =(.*);\napp.page\[\"page\"\]', response.text, re.M | re.I | re.S)
        # 提取到當(dāng)前頁面所在的所有圖片信息
        data = json.loads(data.group(1))
        # 轉(zhuǎn)換字符串為列表
        for item in data:
            url = "https://hbimg.huabanimg.com/" + item["file"]["key"]
            # 拼接圖片地址
            index = item["file"]["type"].rfind("/")
            type = "."+item["file"]["type"][index + 1:]
            # 獲取圖片的類型
            file_name = item["raw_text"]
            # 獲取圖片的中文名
            download_img(url, file_name,type)
            # 下載圖片

'''
下載圖片
url        圖片的地址
name   圖片的中文名
type     圖片的類型
'''
def download_img(url,name,type):
    response = requests.get(url,verify=False)
    # 使用requests 下載圖片
    index = url.rfind('/')
    file_name = name+url[index + 1:]+type
    # 獲取圖片的hash值
    print("下載圖片:" + file_name)
    # 打印圖片名稱
    save_name = "./photo/" + file_name
    # 圖片保存的地址(注意photo要自己建一個(gè),與當(dāng)前.py文件同一個(gè)文件夾)
    with open(save_name, "wb") as f:
        f.write(response.content)
        # 寫入圖片到本地
'''
定義主函數(shù)
'''
def main():
    login()

# 如果到模塊的名字是__main__ 執(zhí)行main主函數(shù)
if __name__ == '__main__':
    main()

在線練習(xí):https://www.520mg.com/it
IT 入門感謝關(guān)注
IT 入門 感謝關(guān)注

相關(guān)案例查看更多