【问题标题】:How to add Text to end of each image name when scraping with Python使用 Python 抓取时如何在每个图像名称的末尾添加文本
【发布时间】:2021-10-02 21:29:11
【问题描述】:

我正在从一个网站下载四张图片。我希望每张图片都被命名为 SKU,然后是 (1)、(2) 等。

我已经设法编写了代码来下载每个文件,但是它目前正在覆盖每个文件,因为它们的名称都相同。

我需要在我的代码中做什么才能使每个代码的末尾都有数字?

for image in images:
    if(image.get('src').startswith('https://imageapi.partsdb.com.au/api/Image')):
        link = (image.get('src'))
        name = soup.find("div",{"class":"head2BR"}).text
        with open(name + '.jpg','wb') as f:
            im = requests.get(link) 
            f.write(im.content)
            print('Writing:', name)

【问题讨论】:

    标签: python image beautifulsoup screen-scraping


    【解决方案1】:

    您可以使用内置的 enumerate() 函数 - 这将产生项目及其索引。

    for index, image in enumerate(images, start=1):
        if(image.get('src').startswith('https://imageapi.partsdb.com.au/api/Image')):
            link = (image.get('src'))
            name = f'{soup.find("div", {"class": "head2BR"}).text} ({index})'
    
            with open(name + '.jpg','wb') as f:
                im = requests.get(link) 
                f.write(im.content)
                print('Writing:', name)
    

    【讨论】:

    • 这确实会更改名称并输出所有图像,但不是我需要的。它已将 sku(在本例中为 KBR1510)末尾的零更改为不同的数字,而不是在末尾添加一些内容。我需要 SKU 保持不变 - 最后带有 -1、-2 或 (1)、(2)。我仍在学习并希望循环访问多个页面以抓取产品图像,因此文件仍需要包含完整的 SKU 作为名称的一部分。
    • @LyndaHarmer 将name 更改为name = f'{soup.find("div", {"class": "head2BR"}).text ({index})}' 是否有效?
    • 不,这并不抱歉 :( 我收到以下错误:TypeError: 'str' object is not callable
    • @LyndaHarmer 我认为这是我的问题。我编辑了答案。有用吗?
    • 好的,谢谢!!!!有用。现在只需弄清楚如何在网站上的每个页面上循环以获取每个产品的图像 - 祝我好运!非常感谢您的帮助:)
    猜你喜欢
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 2012-07-03
    • 2014-05-29
    相关资源
    最近更新 更多