实战8、Python合成图片

一、前提声明

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')

3、全局总览

4、运行结果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值