使用Regex显示网站图像的问题

2024-04-29 08:21:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正试图为所有找到的图片刮一个网站。我的代码成功地显示了所有图像,包括.jpg、.bmp&。gif。不过,它也会显示这些图像的高度。我想知道如何修改我的代码,从输出中删除图像的高度,并整理输出,只提供附件中所示的干净链接。下面我附上了一个链接,显示我的代码输出以及我的当前代码如下。我还附上了我的理想输出。谢谢你的帮助,谢谢

我的代码输出:https://imgur.com/a/ZxEXh

我要找的输出:https://imgur.com/a/eBdK8

files = re.findall(r'\<img .*\=.*', page.decode())
files.sort()
print (f'\n [+] {len(files)} IMAGES FOUND:\n')
for file in files:
    print(file)

Tags: 代码https图像com高度网站链接图片
2条回答

Regex并不是解析HTML或XML数据的最佳工具,而BeautifulSoup在那里效率更高、更简单。你可以做:

from bs4 import BeautifulSoup

...    
soup = BeautifulSoup(page.decode(), 'html.parser')
files = [ i.get("src") for i in soup.findAll('img') ]  # get the src attribute for all img tags
files.sort()
print (f'\n [+] {len(files)} IMAGES FOUND:\n')
for file in files:
    print(file)

这样,HTML被有效地解析,只返回真正的标记

您可以直接提取图像src

>>> images = ['<img src="demo.jpg" height=12>', '<img src="demo2.jpg" height=500>']
>>> for image in images:
        print(re.search(r'<img[^>]*src="([^"]*)"', image).group(1))

demo.jpg
demo2.jpg

如果您的输入都是string,您可以使用findall,然后对其进行迭代

>>> images = '''<img src="demo.jog" height=12> <img src="demo.jog" height=500>'''
>>> res = re.findall(r'<img[^>]*src="([^"]*)"', images)
>>> for img in res:
        print(img)
demo.jpg
demo2.jpg

相关问题 更多 >