Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Δεν ξερω απο προγραμματισμό να τονίσω απλα ψαχνω μια λύση που μπορει να γλυτώσει μια δουλεια 20 ημερων 

Εχουμε ενα URL Α το οποίο έχει και ενα πεδίο αναζήτησης με βάση τον κωδικό του προιοντος

Εχουμε μια λίστα με 500 κωδικούς προιοντος 

Ποσο εύκολο ειναι και με τι τροπο να πάει το εκάστοτε script να ψάξει αυτούς τους 500 κωδικούς και να σώσει τις photos των εκάστοτε urls?

 

Δημοσ.

Αν δεν ξέρεις προγραμματισμό δεν είναι εύκολο, αν ξέρεις είναι νορμάλ. 

Θες να πεις το site μήπως γίνεται και χωρίς script? 

Δημοσ.
12 λεπτά πριν, Xvipes είπε

Αν δεν ξέρεις προγραμματισμό δεν είναι εύκολο, αν ξέρεις είναι νορμάλ. 

Θες να πεις το site μήπως γίνεται και χωρίς script? 

Αν θες στο στέλνω με pm. Προσπαθω να βρω γρηγορες λύσεις για κατι που απαιτεί αρκετό χρόνο και μια θέληση να βοηθήσω συναδέλφους που δεν εχουν χρονο

να βγάλουν κατι σε λιγότερο χρόνο...

  • Like 1
Δημοσ. (επεξεργασμένο)

Μια απλή λύση χωρίς να μπλέκω με scrapy κλπ για να γίνει όπως πρέπει. Κάνει τη δουλεία του λίγο που το δοκίμασα. Πιστεύω έχεις άδεια από τον διαχειριστή του σάιτ για να του ταλαιπωρήσεις τον σέρβερ, αν και μάλλον δεν είναι και τραγικά πολλά τα requests για 500 προϊόντα. Παίρνει λίγο καθαρογράψιμο αλλά δε βαριέσαι ώρα που 'ναι.

Spoiler
import requests
from bs4 import BeautifulSoup


def download_product_info(product_page_path, product_code):
    response = requests.get(f"TO BASE URL TOU SITE{product_page_path}")

    if response.status_code != 200:
        print(f"Error loading product's {product_code} page.")
        return
    
    inner_soup = BeautifulSoup(response.text, 'html.parser')

    # Download product's image
    gallery_slider_div = inner_soup.find("div", {"class": "itemdetail__gallery__slider"})
    label_tag = gallery_slider_div.find("label", {"for": "gallery-tab0"})

    if label_tag and 'data-src' in label_tag.attrs:
        img_url = label_tag['data-src']
        img_type = img_url.split('.')[-1]
        
        img_response = requests.get(img_url)
        if img_response.status_code != 200:
            print(f"Error downloading product's {product_code} image.")
            return
        
        with open(f"images/{product_code}.{img_type}", 'wb') as img_file:
            img_file.write(img_response.content)
    
    # Download product's datasheets
    tbody_element = inner_soup.find('div', id='tab-content3')

    if not tbody_element:
        print(f"Error downloading product's {product_code} datasheet.")
        return

    datasheets = tbody_element.find_all('td', class_='datatable__body__item', attrs={'data-title': True})

    for datasheet in datasheets:
        datasheet_url = datasheet.find('a')['href']
        datasheet_name = datasheet["data-title"]
        datasheet_response = requests.get(datasheet_url)

        if datasheet_response.status_code != 200:
            print(f"Error downloading product's {product_code} datasheet.")
            return
        
        with open(f"datasheets/{product_code} - {datasheet_name}.pdf", 'wb') as datasheet_file:
            datasheet_file.write(datasheet_response.content)


def get_product_page(product_code):
    search_url = "TO URL THS SEARCH BAR"

    params = {'q': product_code}

    response = requests.post(search_url, params=params)

    if response.status_code != 200:
        print(f"Product with code: {product_code} not found.")
        return

    soup = BeautifulSoup(response.text, 'html.parser')
    first_search_result = soup.find('div', class_='itemlist__item__row-image')

    if not first_search_result:
        print(f"Error getting product's {product_code} page.")
        return

    a_tag = first_search_result.find('a')

    if a_tag and 'href' in a_tag.attrs:
        return a_tag['href'].split('?')[0]
    
    print(f"Error getting product's {product_code} page.")
    return


if __name__ == "__main__":
    with open("products.txt") as input_file:
        product_codes = [line.strip() for line in input_file]

    for code in product_codes:
        product_page = get_product_page(code)
        download_product_info(product_page, code)

 

Για input θέλει ένα κωδικό ανά γραμμή εντός του αρχείου "products.txt"

Επεξ/σία από SOADNICK
spoiler
Δημοσ. (επεξεργασμένο)

Καλησπέρα, ευχαριστώ για την βοήθεια , θα το κοιτάξω μεσα στις επομενες μερες γιατι πιεζει ο χρονος σίγουρα

Το θέμα ειναι οτι το τωρινό erp και το τωρινό b2b ειναι αρκετά κουλουβάχατα στις υπάρχουσες κατηγορίες 

Εχω φτιαξει και εχω ξεχωρίσει 4400 ειδη περίπου τα οποία ηταν σε καμια 20αρια-25αρια κατηγορίες πριν (και τωρα που μιλάμε δηλαδη)

Τα εχω βαλει σε excel sheets ανα νέα κατηγορία (10 κεφαλικές κατηγορίες στο νεο πρόγραμμα /b2b) και φτιάχνουμε με τους συναδέλφους

υποκατηγορίες (μεχρι 2 max) και ενα δευτερο sheet με τα χαρακτηριστκά των ειδών (φιλτρα οπως μηκος, ακροδεκτης α , β , ανάλυση κλπ)

Συν ενα excel Που το εχω πάρει επ'ωμου με ολα τα βάρη και τα taric codes , φορους ανακύκλωσης κλπ

Ειναι επίπονη δουλεια γενικά αλλα πιστευω οτι θα προλάβουμε

Ευχαριστώ και μιλάμε

 

Επεξ/σία από ΜΑΝΩΛΗΣ1
Δημοσ.
20 ώρες πριν, ΜΑΝΩΛΗΣ1 είπε

Καλησπέρα, ευχαριστώ για την βοήθεια , θα το κοιτάξω μεσα στις επομενες μερες γιατι πιεζει ο χρονος σίγουρα

Το θέμα ειναι οτι το τωρινό erp και το τωρινό b2b ειναι αρκετά κουλουβάχατα στις υπάρχουσες κατηγορίες 

Εχω φτιαξει και εχω ξεχωρίσει 4400 ειδη περίπου τα οποία ηταν σε καμια 20αρια-25αρια κατηγορίες πριν (και τωρα που μιλάμε δηλαδη)

Τα εχω βαλει σε excel sheets ανα νέα κατηγορία (10 κεφαλικές κατηγορίες στο νεο πρόγραμμα /b2b) και φτιάχνουμε με τους συναδέλφους

υποκατηγορίες (μεχρι 2 max) και ενα δευτερο sheet με τα χαρακτηριστκά των ειδών (φιλτρα οπως μηκος, ακροδεκτης α , β , ανάλυση κλπ)

Συν ενα excel Που το εχω πάρει επ'ωμου με ολα τα βάρη και τα taric codes , φορους ανακύκλωσης κλπ

Ειναι επίπονη δουλεια γενικά αλλα πιστευω οτι θα προλάβουμε

Ευχαριστώ και μιλάμε

 

Αν οι περισσότερες πληροφορίες υπάρχουν στο υπάρχων export από το erp, τότε κάποιος που ασχολείται με το κομμάτι του data processing των προϊόντων ( αρκεί να είναι αρκετά efficient σε Excel ή Google sheet), θα μπορούσε να σας τα ετοιμάσει όλα σε 1-2 μέρες, όπως να βάλει αυτόματα πληροφορίες σε όσα σημεία είναι δυνατόν.

Επειδή έκανα αρκετούς μήνες κάτι τέτοιο σε πολύ μεγαλύτερους καταλόγους (μιλάμε για χάλια erp συστήματα με 40-50,000 κωδικούς ή σε κατασκευαστές που δεν είχαν καν κατάλογο ηλεκτρονικό) μπορείς το 95% της δουλειά να το κάνεις μαζικά και να χρειαστεί μόνο το 5% manual, γιατί δεν υπάρχει οποιοσδήποτε τρόπος συσχέτισης. Και μετά τα νέα διορθωμένα δεδομένα τα εκχωρείς εκ νέου στο νέο πρόγραμμα. Μπορείς να κάνεις re-create μέχρι και τα ονόματα / περιγραφές αυτοματοποιημένα για ομοιομορφία στον κατάλογο. 

Οπότε αντί να εκχωρείτε manual τιμές δείτε λογικές ομαδοποίησης για αυτόματο import πληροφοριών και αφήστε το manual στο τέλος. Η λογική αυτή θα σας βοηθήσει όμως και όταν χρειάζεστε να δημιουργήσετε νέα προιόντα οπότε είναι κάτι που θα μείνει. Μπορεί να γίνει όλο αυτό και με κώδικα αλλα θεωρώ ότι το excel είναι πολύ πιο doable για αυτούς που δεν ασχολούνται με προγραμματισμό. 

  • Like 1
  • 2 εβδομάδες αργότερα...

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...