es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo aplicar un límite para obtener 10 resultados.

Estoy intentando raspar las imágenes, me darán 23 imágenes pero quiero aplicar un límite para que solo me den 10 imágenes. ¿Me puedes ayudar con esto?

import requests
from bs4 import BeautifulSoup
import pandas as pd
baseurl='https://twillmkt.com'
headers ={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36'
}
r =requests.get('https://twillmkt.com/collections/denim')
soup=BeautifulSoup(r.content, 'html.parser')
tra = soup.find_all('div',class_='ProductItem__Wrapper')
productlinks=[]
for links in tra:
    for link in links.find_all('a',href=True):
        comp=baseurl+link['href']
        productlinks.append(comp)

data = []

for link in set(productlinks):
    r =requests.get(link,headers=headers)
    soup=BeautifulSoup(r.content, 'html.parser')
    up = soup.find('div',class_='Product__SlideshowNavScroller')
    for e,pro in enumerate(up):
        t=pro.find('img').get('src')
        data.append({'id':t.split('=')[-1], 'image':'Image '+str(e)+' UI','link':t})

df = pd.DataFrame(data)
df.image=pd.Categorical(df.image,categories=df.image.unique(),ordered=True)
df = df.pivot(index='id', columns='image', values='link').reset_index().fillna('')
df.to_csv('kj.csv')
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para limitar el número de imágenes a 10, puedes modificar el código agregando un contador y añadiendo una declaración “if” para romper el bucle una vez que el contador llegue a 10. Aquí tienes un ejemplo de cómo puedes modificar el código:

    import requests
    from bs4 import BeautifulSoup
    import pandas as pd
    
    baseurl='https://twillmkt.com'
    headers ={
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36'
    }
    r =requests.get('https://twillmkt.com/collections/denim')
    soup=BeautifulSoup(r.content, 'html.parser')
    tra = soup.find_all('div',class_='ProductItem__Wrapper')
    productlinks=[]
    for links in tra:
        for link in links.find_all('a',href=True):
            comp=baseurl+link['href']
            productlinks.append(comp)
    
    data = []
    count = 0
    
    for link in set(productlinks):
        r =requests.get(link,headers=headers)
        soup=BeautifulSoup(r.content, 'html.parser')
        up = soup.find('div',class_='Product__SlideshowNavScroller')
        for e,pro in enumerate(up):
            t=pro.find('img').get('src')
            data.append({'id':t.split('=')[-1], 'image':'Image '+str(e)+' UI','link':t})
            count += 1
            if count == 10:
                break
    
    df = pd.DataFrame(data)
    df.image=pd.Categorical(df.image,categories=df.image.unique(),ordered=True)
    df = df.pivot(index='id', columns='image', values='link').reset_index().fillna('')
    df.to_csv('kj.csv')
    

    En el código modificado, se inicializa una variable count en 0. Dentro del bucle que extrae las imágenes, la variable count se incrementa en 1 por cada imagen. Si la variable count llega a 10, se rompe el bucle utilizando una declaración “if”. Esto asegura que solo se extraigan las primeras 10 imágenes.

Comments are closed.