Pierwszy projekt w Pythonie "Aktualizator cen PrestaShop" Założenia, pytania + raporty postępów

0

Cześć, chciałbym w tym temacie opisać cały projekt od założeń po gotowe repozytorium na gicie. Liczę na konstruktywną krytykę i może drobną pomoc kiedy z czymś utknę.
Jestem zupełnym początkującym i chyba porywam się z motyką na słońce - całe doświadczenie jakie mam z programowanie to "hello world" w javie z rok temu. Słyszałem że najlepszą formą nauki jest znalezienie praktycznego projektu który rozwiązuje jakiś nasz problem i zrealizowanie jego :) Tak wiec:

"Aktualizator cen dla PrestaShop 1.7.X" - cel program w wersji finalnej ma pracować "komercyjnie" pilnując aktualności cen między platformą B2B hurtowni a sklepem na PS1.7.6

Zasada działania:

*Nie mamy API, Xml, Csv ani innych typowych ułatwień dla ecommerce.
*Program za pomocą Beautiful Soup łączy się z platformą B2B loguje i utrzymuje sesje.
*Następnie łączy się z bazą danych sklepu pobiera wszystkie produkty których numer zaczyna się od "kol-" (prefix hurtownika w sklepie np kol-000/111-222 )
*Usuwa prefix a numer towaru wkleja do pola wyszukiwania na stronie hurtownika i przechodzi do strony produktu - gdzie mamy cenę hurtową i sugerowana detaliczną
*Sprawdza warunek czy cena sugerowana jest większa niż cena hurtowa + X%
*Jeśli cena jest większa to pobiera cenę do stosownego pola w bacie danych jeśli nie to pobiera wartość cenaHurtowa+X%
*Program przechodzi przez wszystkie kolejne rekordy/produkty

Na początek proszę o info czy chociaż założenia są sensowne ewentualnie gdzie jest pole do fuckup'u? :)
Może jakąś podpowiedź jak "wyciągnąć" te rekordy z bazy sklepu z prefixem a następnie przejść po nich (przeiterować) wykonując to zadanie sprawdzania

0

Ale ten Beautiful Soup to jaka sesje ma utrzymywać? Czy hurtownia wie, że tak będziesz robił? Jeśli nie to mogą cię bardzo szybko wyciąć. Rozumiem, że informacje o cenie pobierasz parkując HTMLa - ryzyko jest takie, że jak zmienia strukturę strony to twoja zabawka się wysypie.
Żeby wyszukać produkty z "kol" na początku wystarczy użyć klauzuli like.
Co do iterowania po wierszach z bazy tu masz przykład jak to zrobic: https://stackoverflow.com/questions/3785294/best-way-to-iterate-through-all-rows-in-a-db-table

0

Miej świadomość że za dużo na ten temat nie wiem i to moje pierwsze podejście.

Ale ten Beautiful Soup to jaka sesje ma utrzymywać?
Znalazłem w jakimś tutorialu informacje że jest to wymagane aby nam się całość nie wysypała wymagając znowu logowania. Mój aktualny stan wiedzy nie pozwolił mi tego zweryfikować.
Czy hurtownia wie, że tak będziesz robił?
Tak, spokojnie. Hurtownia wystawia pliki XML gdzie przekazuje wszystkie informacje poza ceną, zapytani czy mogą je dla mnie dodać odpowiedzieli że nie chcą/umieją/mogą i mam wolną rękę (profesjonalizm mocno)
ryzyko jest takie, że jak zmienia strukturę strony to twoja zabawka się wysypie.
Urok wszystkich scraperów, jak się wysypie to będziemy robić nowy a może nowa wersja systemu da mi wreszcie wszystkie dane i już nie trzeba będzie ;)
Żeby wyszukać produkty z "kol" na początku wystarczy użyć klauzuli like. Co do iterowania po wierszach z bazy tu masz przykład jak to zrobic: https://stackoverflow.com/que[...]hrough-all-rows-in-a-db-table
Bardzo cenne wskazówki dzięki.

0

Zwykle to wygląda tak, że używasz czegoś do zapytań (pewnie requests) i operując na tym dostajesz tekst z kodem HTML, który potem wrzucasz do bs. Tak że w tym trzymasz stan sesji.

0

No to jak na nowicjusza przystało utknąłem na pierwszej [CIACH!] czyli połączeniu z bazą danych.

Kopia bazy sklepu odpalona lokalnie za pomocą Xampp lokalnie - phpMyAdmin działa. Ide to PyCharm doinstalowany Database Navigator. Dodaje nową bazę klikając "+" w DB Browser > MySql.
Podaje nazwę
Host - próbowałem 127.0.0.1 i localhost port 3306 zgodnie z xamppem
user i password

Test Connection daje:

Cannot connect to "nazwa".
Access denied for user 'nzawa'@'localhost' (using password: YES)

Co mogłem zepsuć?

0

Access denied for user 'nzawa'@'localhost' (using password: YES)

Wygląda jak literówka w danych połączenia — nie chodziło Ci o „nazwa”?

1 użytkowników online, w tym zalogowanych: 0, gości: 1