1.根据我的后端经验,有可能返回的是一个base64的字节,并不是真实的图片,经过前端组件渲染才形成的图片
2.非常不建议爬取学校官网图片,服务器本来就有那么多人访问,而且保护很强,自己也拿捏不住尺度,容易造成对于服务器的攻击
3.可以试试彼岸图网或者豆瓣里面的图片,但是适度,不要过分爬取
4.这里提供部分代码作为参考:
案例一:
import requests
from bs4 import BeautifulSoup as bs
import os
url="http://pic.people.com.cn/"
resp=requests.get(url=url)
resp.encoding="gbk"
page=bs(resp.text,"html.parser")
ul=page.find("ul",class_="swiper-wrapper")
li=ul.find_all("li")[1:]
# print(li)
for l in li:
a=l.find_all("a")
for a in a:
img=a.find_all("img")
for img in img:
src=img.get("src")
name=img.get("alt")
print(name)
img_down=url+src
img_down=requests.get(img_down)
img_down.encoding="utf-8"
with open("../data/img/"+name+".png","wb") as f:
f.write(img_down.content)
print(name,":","下载完成!!!")
print("全部下载完成!")
案例二:
import requests as re
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from lxml import etree
import time
driver=webdriver.Chrome()
start_url="https://cc0.cn/"
driver.get(url=start_url)
time.sleep(3)
driver.find_element_by_xpath("/html/body/div[1]/div/form/input[4]").send_keys("风景",Keys.ENTER)
time.sleep(1)
img_list=[]
for i in range(5):
path=f'/html/body/div[4]/div[{i}]/a/img'
img=driver.find_element_by_xpath(str(path))
img_list.append(img)
time.sleep(2)
img_list
案例三:
import warnings
import openpyxl
import requests as rq
import pandas as pd
import numpy as np
from bs4 import BeautifulSoup as bs
from matplotlib.pyplot import plot as plt
warnings.filterwarnings("ignore") #忽略警告
# 爬取目标
base_url="https://pic.netbian.com/new/"
#设置请求头
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}
#进行访问
rep_html=rq.get(base_url,headers=headers)
#字符集设置
rep_html.encoding="gbk"
#显示获取到的网页内容
# print(rep_html.text)
#网页数据解析
page=bs(rep_html.text,"html.parser")
#获取ul标签
ul=page.find('ul',class_="clearfix")
#在ul标签中获取图片地址
img_list=ul.find_all("img")
print(img_list[1])
#在ul标签中获取图片名称
name_list=ul.find_all("b")
print(name_list[1])
# 爬取目标
base_url="https://pic.netbian.com/new/"
#设置请求头
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}
#进行访问
rep_html=rq.get(base_url,headers=headers)
#字符集设置
rep_html.encoding="gbk"
#显示获取到的网页内容
# print(rep_html.text)
#网页数据解析
page=bs(rep_html.text,"html.parser")
#获取ul标签
ul=page.find('ul',class_="clearfix")
#在ul标签中获取图片地址
img_list=ul.find_all("img")
#在ul标签中获取图片名称
name_list=ul.find_all("b")
img_list_clean=[]
name_list_clean=[]
for img in img_list:
#获取img标签中的url,并且进行拼接
img="https://pic.netbian.com"+img["src"]
img_list_clean.append(img)
#获取图片名称
for name in name_list:
name_list_clean.append(name.text)
print(img_list_clean[1])
print(name_list_clean[1])
#构造数据字典
data={"img_name":name_list_clean,"img_url":img_list_clean}
#喂入DataFrame
pd_data=pd.DataFrame(data)
#数据保存
pd_data.to_excel("../data/xlsx/img.xlsx",index_label=None)
#数据读取
data=pd.read_excel("../data/xlsx/img.xlsx")
data
欢迎私信一起交流学习