知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們在追求其視覺表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營銷的便利,運(yùn)營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏壧峁┍憬莸闹С郑?
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é)果
四、安裝 必要的庫
- win+R 打開運(yùn)行
- 輸出cmd 進(jìn)入控制臺
- 分別安裝
requests
pip install requests
五、分析頁面
- 頁面規(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"
我決定使用requests
的session()
功能來獲取用戶登錄后的會(huì)話session信息
3. 頁面信息
我們通過右鍵查看源代碼發(fā)現(xiàn)數(shù)據(jù)是保存在javascript
里面的我們準(zhǔn)備用正則表達(dá)式提取頁面信息
六、全部代碼
#-*- 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)注
相關(guān)案例查看更多
相關(guān)閱讀
- 云南小程序哪家好
- 云南網(wǎng)站建設(shè)列表網(wǎng)
- 云南網(wǎng)站建設(shè) 網(wǎng)絡(luò)服務(wù)
- 網(wǎng)站建設(shè)高手
- 云南網(wǎng)站制作哪家好
- 云南小程序開發(fā)制作
- 做小程序被騙
- 制作一個(gè)小程序
- 汽車報(bào)廢
- 云南做百度小程序的公司
- 模版信息
- web開發(fā)技術(shù)
- 小程序開發(fā)排名前十名
- 分銷系統(tǒng)
- SEO
- 智慧農(nóng)貿(mào)市場
- painter
- 網(wǎng)站收錄
- 網(wǎng)站建設(shè)首頁
- 模版消息
- 云南網(wǎng)站維護(hù)
- 汽車回收系統(tǒng)
- 汽車拆解管理軟件
- 網(wǎng)站建設(shè)費(fèi)用
- 云南軟件定制
- 報(bào)廢車回收管理系統(tǒng)
- 云南網(wǎng)站開發(fā)哪家好
- 云南建設(shè)廳網(wǎng)站首頁
- 云南網(wǎng)站建設(shè)費(fèi)用
- 表單