使用bs4抓取网页图片,流程为:
1、拿到网页的源代码
2、从子页面中找到所需图片的下载地址
3、下载图片到本地
import requests
from bs4 import BeautifulSoup
from fake_useragent import UserAgent
#获取html代码
url = "http://bizhi360.com/meinv/"
headers= {'User-Agent':str(UserAgent().random)}
resp = requests.get(url,headers=headers)
resp.encoding = 'UTF-8' # 处理乱码
#存入BeautifulSoup
page = BeautifulSoup(resp.text, "html.parser") # 指定html解析器
resp.close()
# print(page)
#找到子页面网址位置
trs=page.find("ul")
trss=trs.find_all("a")
#print(trss)
name=list()
src=list()
#组合成子页面网址
for i in trss:
src.append("http://bizhi360.com"+i.get("href"))
#在子页面获取下载网址和图片名字,保存到本地
for i in range(0, len(src)):
pageurl=src[i]
res = requests.get(pageurl, headers=headers)
res.encoding = 'UTF-8' # 处理乱码
#打开子页面获取下载图片地址
pages = BeautifulSoup(res.text, "html.parser") # 指定html解析器
#print(pages)
pic=pages.find("a",attrs={"class": "download"})
name = pages.find("h1", attrs={"class": "title"})
# print(name.text)
#print(pic.get("href"))#获得下载网址:http://pic.bizhi360.com/bbpic/76/10676.jpg
# 下载图片
picture = requests.get(pic.get("href"))
#name=name+".jpg"
with open("jpgs/" + name.text+".jpg", mode="wb") as f:
f.write(picture.content) # 图片内容写入文件
f.close()
print("over!!!", name.text)
res.close()
最后下载到一个文件夹: