bs4圖片爬取
阿新 • • 發佈:2021-11-03
一、步驟
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()