美丽汤:替换返回的图像源的一部分



我是python的新手,也是美丽的汤的新手,所以为了练习,我做了一个在大多数情况下都有效的图像抓取器。 我能够找到图像并将它们下载到我的计算机上,并根据它们的名称将它们放入文件夹中。 但是我遇到了一个问题。 这是我的代码

import requests
from bs4 import BeautifulSoup
import os.path
url = "https://example.net/g/1"
i = 1
data = requests.get(url)
soup = BeautifulSoup(data.text, 'html.parser')
for sou in soup.findAll("div", {"class": "gallery"}):
sou.decompose()
containers = soup.find_all('img')
title = soup.find('h1').text
imgsrc = containers
for imgs in imgsrc: 
if ".jpg" in imgs['src']:
sauce = (imgs['src'])
if sauce[:1] =="/":
image = 'https:' + sauce
else:
image = sauce
nametemp = imgs.get('alt')
if nametemp is None:
filename = str(i)
i = i+1
print(image)

当我运行这个时,我得到了这些图像源,

  1. https://t.example.net/galleries/9/cover.jpg
  2. https://t.example.net/galleries/9/1t.jpg
  3. https://t.example.net/galleries/9/2t.jpg

这是我在大多数情况下想要的,但是返回的源是缩略图,因此它们很小。 要获得全尺寸图像,这很容易。 只需更换两个 Ts。

我的问题是我如何用这个替换上面的内容

  1. https://i.example.net/galleries/9/1.jpg
  2. https://i.example.net/galleries/9/2.jpg

我尝试使用 replace_with(( 并查看了文档,但我对它有所了解。

你的代码很混乱,与你的问题无关。因此,假设您有一个名为thumbnails的 URL 列表:

thumbnails = [
'https://t.example.net/galleries/9/1t.jpg',
'https://t.example.net/galleries/9/2t.jpg',
'https://t.example.net/galleries/9/3t.jpg',
]

然后,您可以在列表推导中使用正则表达式替换来根据需要转换 URL:

import re
images = [re.sub(r't(.jpg)', r'1', url) for url in thumbnails]

最新更新