1. 程式人生 > 其它 >bs4圖片爬取

bs4圖片爬取

一、步驟

1、拿到主頁面的前端原始碼,然後提取子頁面的連結地址

2、通過href拿到子頁面的內容。從子頁面中找到圖片的下載地址

3、下載圖片

二、程式碼


import requests
from bs4 import BeautifulSoup
import os

headers = {

	"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40"
}

url = "https://umei.cc/bizhitupian/weimeibizhi/"

resp = requests.get(url,headers)
resp.encoding = 'tuf-8'


main_page = BeautifulSoup(resp.text,"html.parser")

alist = main_page.find("div",class_="TypeList").find_all("a")




for i in alist:
	href = i.get('href')
        #獲取子頁面完整url 
	child_href = url + href.split("/")[-1]
	
	
	child_href_resp = requests.get(child_href,headers)	
	child_href_resp.encoding = 'tuf-8'
	child_href_text = child_href_resp.text
	
	child_page = BeautifulSoup(child_href_text,"html.parser")
        # 定點陣圖片地址
	p = child_page.find("p",align="center")
	img = p.find('img')
        # 獲取圖片URL
	src = img.get("src")
	
	img_resp = requests.get(src,headers=headers)
	img_name = src.split("/")[-1]
        # 判斷所在目錄下是否有該檔名的資料夾
	if  not os.path.exists('img'): 
                # 不存在建立
    		os.makedirs('img')
	else:
                # 存在開啟寫入,with open在windows下不存在會直接建立,但是在linux下我沒成功所以加了個判斷
		with open("img/"+img_name,mode="wb") as f:
                        # img_resp.content拿到的是位元組
			f.write(img_resp.content)
resp.close()