一、前提声明
1、寻找图片下载地址
在网页中,正常的图片下载地址应该是如图所示的地址"//div[@class="imgbox-border"]/a/img/@src"
但是在用resquests.get()来获取网页数据是,打印出来的网页页面数据与实际网页数据的格式类型有差异,导致上述的图片下载地址在xptah函数下寻找不到。如图所示:
在窗口输出的html页面实际是这个样子:
在网页中,它存在于:
在爬取网页内容这是属于经常出现的情况.此时,你要么换一个好一点的图片网址进行爬取,要么你就使用正则表达式进行数据筛取.
这里我选择换网址
2、
图片图库网址:动漫美女_动漫美女图片_美女漫画_动漫美女壁纸 - - 亿图全景图库
img_name = xp.xpath('//html/body/div/ul/li/a/div/text()')
img_url = xp.xpath('//html/body/div/ul/li/a/img/@data-src')
二、完整代码及运行结果
1、main.py
# 获取女神图片
import requests
from lxml import etree
# 地址
url = 'https://www.yeitu.com/dongman/'
hearders = {
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
}
#发送请求
respond = requests.get(url,headers=hearders)
respond.encoding = 'utf-8'
print(respond.text)
#数据解析
xp = etree.HTML(respond.text)
img_url = xp.xpath('//html/body/div/ul/li/a/img/@data-src')
img_name = xp.xpath('//html/body/div/ul/li/a/div/text()')
for url,name in zip(img_url,img_name):
print(f'图片名:{name}--地址:{url}')
#保存图片
resp = requests.get(url,headers=hearders)
#当前目录下的img目录
with open(f'./img/{name}.jpg','wb') as file:
file.write(resp.content)
#保存数据
#thumburl
2、img_compose.py
#处理图片的工具 pip install pillow
from PIL import Image
import os #python自带的工具,专门用来处理文件的
im = Image.open('./img/可爱小女孩与四只小白猫温馨动人画面动漫壁纸.jpg')
w,h = im.size#返回宽和高
image_row = 7
image_column = 3
for n in os.listdir('./img'): #./:当前目录,列出img目录下的所有文件名
print(n)
names = os.listdir('./img')
#创立画布,列*宽,行*高=总画布大小
new_img = Image.new('RGB',(image_column*w,image_row*h))
for y in range(image_row): #0,1,2,3
for x in range(image_column): #0,1,2,3
#注意写成'./img/'
o_img = Image.open('./img/'+names[image_column*y + x]) #image_column=4
new_img.paste(o_img,(x*w,y*h))
new_img.save('F.jpg')