Vinnaren i pepparkakshustävlingen!
2022-08-21, 10:32
  #133
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Methos
Länka till andra dokument?
Du kan manipulera celler inom DataFrame, du kan ladda flera filer och göra flera DataFrame och lägga ihop. Men jag tror inte att du kan länka två separata celler i två filer. Går det ens med openpyxl?
Ja, det går.
Openpyxl kan lägga in både formler och hyperlänkar i Excel-filer, precis som en användare kan.
Det går inte riktigt att jämföra med Pandas. Pandas är bättre för stora beräkningar (som Python-motorn utför). Openpyxl är bättre för att automatisera komplexa Excel-beräkningar, eller andra övningar som Bonnatorps där man behöver Excel-funktionalitet i kalkylarket (här hyperlänkar).
Citera
2022-08-21, 10:39
  #134
Medlem
Citat:
Ursprungligen postat av Enterprise
Om jag vore dig skulle jag släppa Pandas. Pandas är väldigt bra för att göra beräkningar på stora data-set t.ex. statistik. Men i ditt fall använder du väl Excel-filen snarare som en databas med uppgifter i och då har jag svårt att se att Pandas hjälper dig.

Citat:
Ursprungligen postat av Enterprise
Ja, det går.
Openpyxl kan lägga in både formler och hyperlänkar i Excel-filer, precis som en användare kan.
Det går inte riktigt att jämföra med Pandas. Pandas är bättre för stora beräkningar (som Python-motorn utför). Openpyxl är bättre för att automatisera komplexa Excel-beräkningar, eller andra övningar som Bonnatorps där man behöver Excel-funktionalitet i kalkylarket (här hyperlänkar).


Aha, jag tänkte mer att Pandas var perfekt för att spara skräpet till excell. Tänkte inte ens att han behövde röra data utan bara skrapa upp skiten, in i det till en dict eller list och sedan in i DataFrame och in i Excell.

Men då skippar han Pandas om han skall göra mer saker.
Citera
2022-08-21, 21:27
  #135
Medlem
Bonnatorps avatar
Citat:
Ursprungligen postat av Methos
Aha, jag tänkte mer att Pandas var perfekt för att spara skräpet till excell. Tänkte inte ens att han behövde röra data utan bara skrapa upp skiten, in i det till en dict eller list och sedan in i DataFrame och in i Excell.

Men då skippar han Pandas om han skall göra mer saker.
Jo det var så förut, det räckte gott och väl för ursprungsfunktionen som bara var till att jag skulle slippa sitta och leta telefonnummer för hand.
Men projektet blev lite större, och eftersom slutprodukten ska ligga i excel blev det enklast med openpyxl då alla iterationer och jox redan är anpassat för det.
Däremot är det fortfarande lite av intresse att ha en enskild tabell i något format för hela sveriges företag när jag vill plocka ut hela branscher över hela landet.
Excel passar inte till det då det antagligen överstiger gränsen på dryga miljonen rader, även om det i övrigt hade varit perfekt för ändamålet om det var prestandamässigt anpassat för sådana mängder.
Gjorde en tråd som var mer inriktad på SQL-delen, om det blir SQL jag använder. Det blir förmodligen det då excel enkelt kan koppla upp mot det, även om det kanske blir klurigt med hyperlänkfunktionaliteten jag är ute efter just nu.

Kanske jag kan göra en fuling och ge ut primärlistan till kunden, och kräva en månadskostnad för att deras hyperlänkar (för finansbladen) som går till en server på min hemdator ska fungera.
Då får de ju extra funktionalitet i att de slipper hålla reda på var alla de extra filerna ligger, och jag sparar tid i att jag kan stoppa exakt allt i samma mapp
__________________
Senast redigerad av Bonnatorp 2022-08-21 kl. 21:58.
Citera
2022-08-25, 21:31
  #136
Medlem
Bonnatorps avatar
Okej, nu är det tillslut knapphändigt hopsnickrat.
Lite som när man är ute och åker på en gammal moppe som man hoppas att förgasaren inte lossnar allt för ofta på, men som går framåt så längde det vill sig.

Om vi räknar grovt på att alla företagsregister jag kommer åt innehåller en miljon företag (lite mer än hälften av sveriges företag), och jag snittar sex sekunder per företag (scrapar flera sidor) så kommer det ta lite över två månader för allting, förutsatt att programmet aldrig stannar och behöver lite kärlek.
Det går att leva med, men det är ändå lite väl länge. Hade hoppats på kanske två eller tre veckor max.

Problemet är att jag har blivit tvungen att använda time.sleep(), som visserligen antagligen går sänka en aning på sina ställen, men det är en klumpig lösning som är väldigt öppen för fel.
Jag lyckas dock inte använda waiten, den bara felar.

Har en funktion som bara ser ut så här:
Kod:
def wait(xp):
    return WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, xp)))
Men det felar allt som oftast. Antingen får jag stale elements, eller så dyker det upp en mystisk kombination av tecken som ger 0 träffar på google. Ser ut lite som två minnesadresser, men jag tror inte det var hexadecimalt.
Har tyvärr inte den sparad just nu, och det verkar vara lite slumpmässigt när den dyker upp.

Finns det några generella tips på hur man torde handskas med waitfunktionen för att få ner tiderna framgångsrikt?
Citera
2022-08-26, 08:13
  #137
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Bonnatorp
Okej, nu är det tillslut knapphändigt hopsnickrat.
Lite som när man är ute och åker på en gammal moppe som man hoppas att förgasaren inte lossnar allt för ofta på, men som går framåt så längde det vill sig.

Om vi räknar grovt på att alla företagsregister jag kommer åt innehåller en miljon företag (lite mer än hälften av sveriges företag), och jag snittar sex sekunder per företag (scrapar flera sidor) så kommer det ta lite över två månader för allting, förutsatt att programmet aldrig stannar och behöver lite kärlek.
Det går att leva med, men det är ändå lite väl länge. Hade hoppats på kanske två eller tre veckor max.

Problemet är att jag har blivit tvungen att använda time.sleep(), som visserligen antagligen går sänka en aning på sina ställen, men det är en klumpig lösning som är väldigt öppen för fel.
Jag lyckas dock inte använda waiten, den bara felar.

Har en funktion som bara ser ut så här:
Kod:
def wait(xp):
    return WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, xp)))
Men det felar allt som oftast. Antingen får jag stale elements, eller så dyker det upp en mystisk kombination av tecken som ger 0 träffar på google. Ser ut lite som två minnesadresser, men jag tror inte det var hexadecimalt.
Har tyvärr inte den sparad just nu, och det verkar vara lite slumpmässigt när den dyker upp.

Finns det några generella tips på hur man torde handskas med waitfunktionen för att få ner tiderna framgångsrikt?

Har du provat implicit wait?
Alltså att man ställer in en maxtid en gång och sedan kör på utan uttryckliga wait.
Nackdelen med det, antar jag är det kan göra ett program långsammare om man kollar efter element på "chans", alltså att man inte "vet" huruvida de ska finnas eller inte (när det alltså inte nödvändigtvis är en timingfråga)

Citat:
5.2. Implicit Waits
An implicit wait tells WebDriver to poll the DOM for a certain amount of time when trying to find any element (or elements) not immediately available. The default setting is 0 (zero). Once set, the implicit wait is set for the life of the WebDriver object.

Kod:
from selenium import webdriver

driver 
webdriver.Firefox()
driver.implicitly_wait(10# seconds
driver.get("http://somedomain/url_that_delays_loading")
myDynamicElement driver.find_element_by_id("myDynamicElement"
Källa: https://selenium-python.readthedocs.io/waits.html

Förresten använder du try/except-block för dina uttryckliga wait-satser?
__________________
Senast redigerad av Enterprise 2022-08-26 kl. 08:16.
Citera
2022-08-26, 08:37
  #138
Medlem
Bonnatorps avatar
Citat:
Ursprungligen postat av Enterprise
Har du provat implicit wait?
Alltså att man ställer in en maxtid en gång och sedan kör på utan uttryckliga wait.
Nackdelen med det, antar jag är det kan göra ett program långsammare om man kollar efter element på "chans", alltså att man inte "vet" huruvida de ska finnas eller inte (när det alltså inte nödvändigtvis är en timingfråga)


Källa: https://selenium-python.readthedocs.io/waits.html

Förresten använder du try/except-block för dina uttryckliga wait-satser?
Jajusteja, try borde man nog göra.
Glömmer ofta det.

Ett av problemen är t.ex. När jag kör ratsit.
Dels så byter sökrutorna element beroende på om jag har klickat in på ett resultat eller är kvar i söklistan, sköter det via en bool som ändras beroende på om ett resultat öppnats eller inte.
Men jag vet inte om det blir något resultat alls eller ej, och sökresultaten laddar sist av hela sidan. Så det känns klurigt hur jag ska lägga en wait på något som kanske inte dyker upp.
Citera
2022-08-26, 09:02
  #139
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Bonnatorp
Jajusteja, try borde man nog göra.
Glömmer ofta det.

Ett av problemen är t.ex. När jag kör ratsit.
Dels så byter sökrutorna element beroende på om jag har klickat in på ett resultat eller är kvar i söklistan, sköter det via en bool som ändras beroende på om ett resultat öppnats eller inte.
Men jag vet inte om det blir något resultat alls eller ej, och sökresultaten laddar sist av hela sidan. Så det känns klurigt hur jag ska lägga en wait på något som kanske inte dyker upp.

Jag spånar fritt här, men på klientsidan kan man ofta använda jQuery för att kolla om dokumentet har laddat färdigt, se: https://learn.jquery.com/using-jquer...ocument-ready/

Selenium kan, som jag tror jag skrivit i annan tråd, köra Javascript också på klientsidan:
https://www.guru99.com/execute-javas...webdriver.html

Jag tänker mig därför att det borde vara möjligt att låna Selenium vänta på Browser kör färdigt ett viss JS-skript.
Citera
2022-08-26, 20:15
  #140
Medlem
Bonnatorps avatar
Citat:
Ursprungligen postat av Enterprise
Jag spånar fritt här, men på klientsidan kan man ofta använda jQuery för att kolla om dokumentet har laddat färdigt, se: https://learn.jquery.com/using-jquer...ocument-ready/

Selenium kan, som jag tror jag skrivit i annan tråd, köra Javascript också på klientsidan:
https://www.guru99.com/execute-javas...webdriver.html

Jag tänker mig därför att det borde vara möjligt att låna Selenium vänta på Browser kör färdigt ett viss JS-skript.
Ja det igen, då blir dey första grejen nästa tillfälle jag sätter mig på projektet.

Såg förresten idag att Nvidia presenterar sina nya grafikkort 20:e september.

Om det är humana priser på deras egna grafikkort på de första köparna så skulle det vara lajbans att snickra ihop en bot som håller koll på sidan och köper ett 4080 eller så så fort det är tillgängligt.

Hur torde man gå tillväga för detta om man inte vet precis hur sidan kommer vara utformad?
Hoppas på att den är identisk med deras andra kort?
Citera
2023-03-18, 16:00
  #141
Medlem
Kottkompotts avatar
Har fastnat på min proxy nu.
Den slutade plötsligt att fungera med selenium.

Har testat några olika metoder i selenium att mata in proxyn på, men fick alltid omedelbart "www.exempel.com returnerade ingen data".
Slår jag in proxyn i windows nätverksinställningar så kan jag surfa, och IP:n blir ändrad.
Men samma problem kvarstår när jag använder selenium.

Det är så märkligt då det fungerade för en timme sedan.
Någon som stött på något liknande?
Citera
2023-03-19, 15:58
  #142
Medlem
Kottkompotts avatar
Visade sig vara Stormproxies det var fel på.
Bytte till Webshare, vilket var ett fantastiskt val.
Dels är den bättre på alla tänkbara sätt (mycket snabbare och har statistik över användning), utom att den inte är automatiskt roterande, och dels betalar jag nu typ 20 kronor per månad för att täcka behoven, istället för 140.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback