Vinnaren i pepparkakshustävlingen!
2022-04-27, 14:46
  #1933
Medlem
Citat:
Ursprungligen postat av Pontiac-Garage
Nedanstående kod (där iteratorn i används) ligger ju utanför loopen, så det verkar inte som att xpath uppdateras, därav står det still.

Kod:
xpath = "//div[@class='dataTables_paginate paging_simple_numbers']/span/a[text()=" + str(i) + "]"

I övrigt, ta för vana att skriva

Kod:
i = i + 1
som

Kod:
i += 1

Inte bara det; han har ju satt while loopen att snurra när find.drive.... är True samtidigt som han sedan sätter if-satsen på exakt samma kondition. blir while False blir också If-False, eller skall jag skriva; när if blir False så är ju while redan False.


Bör väl vara:
Kod:
i= 2
 xpath = "//div[@class='dataTables_paginate paging_simple_numbers']/span/a[text()=" + str(i) + "]"
while driver.find_element_by_xpath(xpath):
            
             driver.find_element_by_xpath(xpath).click()
             i = i + 1
             xpath = "//div[@class='dataTables_paginate paging_simple_numbers']/span/a[text()=" + str(i) + "]"
            time.sleep(5)


Varför två xpath? Jo för att du måste initiera xpath utanför loopen vid start. Annars kommer inte while att köra och om den körs kommer hela programmet att sprängas då driver.find_element_by_xpath(xpath) inte har någon xpath, variabeln finns ej. Så while måste ju köra driver.find_element_by_xpath(xpath) innan loopen och sedan uppdatera xpath sist innanför loopen. Så nu uppdaterar xpath med den nya i för att köras igen vid nästa while-iteration.


(i det här fallet är i= i+1 bättre)
Citera
2022-04-27, 20:35
  #1934
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Bonnatorp
...
Kod:
i=2
xpath = "//div[@class='dataTables_paginate paging_simple_numbers']/span/a[text()=" + str(i) + "]"
while driver.find_element_by_xpath(xpath):
    if driver.find_element_by_xpath(xpath):
        driver.find_element_by_xpath(xpath).click()
        i = i + 1
        time.sleep(5)
Det kanske är en smaksak, men om du inte är väldigt bekväm med Xpath från början så är enligt min bok CSS-selectors betydligt enklare. Dessa går att pröva direkt i browsern, eftersom de är standard Javascript (document.querySelector(css-selector)) vilket därmed fungerar i alla webläsare (tryck F12)

Finns även till Python och Selenium:
https://chercher.tech/python/css-sel...elenium-python

Lite mer:
https://exadel.com/news/how-to-choos...ole-lot-easier

Edit: Även Xpath går att köra i browsern (https://developer.mozilla.org/en-US/..._in_JavaScript)
__________________
Senast redigerad av Enterprise 2022-04-27 kl. 20:41.
Citera
2022-05-01, 02:27
  #1935
Medlem
Bonnatorps avatar
Koden för företagsregistren vart färdig iallafall.
Nu håller jag på att brottas med nästa sida.

Om jag har en sträng i form av en URL, hur lägger jag in en sträng mitt i den utan att tappa tecken?

www.hemsida.se/+namn+annat

ska bli

www.hemsida.se/annansida/+namn+annat

Så att jag skjuter in "annansida/" precis efter "www.hemsida.se/"

Förmodligen ska man inte sitta och stirra på skärmen och pyssla med sådant här utan avbrott i fem timmar, jag blev nog lite hjärntrött till slut.
Citera
2022-05-01, 08:03
  #1936
Medlem
Citat:
Ursprungligen postat av Bonnatorp
Koden för företagsregistren vart färdig iallafall.
Nu håller jag på att brottas med nästa sida.

Om jag har en sträng i form av en URL, hur lägger jag in en sträng mitt i den utan att tappa tecken?

www.hemsida.se/+namn+annat

ska bli

www.hemsida.se/annansida/+namn+annat

Så att jag skjuter in "annansida/" precis efter "www.hemsida.se/"

Förmodligen ska man inte sitta och stirra på skärmen och pyssla med sådant här utan avbrott i fem timmar, jag blev nog lite hjärntrött till slut.



*Lätt

Kod:
ansid "/annansida"

urlf"www.hemsida.se{ansid}/+namn+annat" 
Citera
2022-05-01, 09:04
  #1937
Medlem
Bonnatorps avatar
Citat:
Ursprungligen postat av Methos
*Lätt

Kod:
ansid "/annansida"

urlf"www.hemsida.se{ansid}/+namn+annat" 
Mjo om det hade varir så enkelt, fast jag glömde säga att annansida är statiskt, och "annat" ändras dynamiskt och hämtas via selenium.

Edit: Hittade det, ska såklart köra url.replace(hemsida.se, hemsida.se/annansida)
__________________
Senast redigerad av Bonnatorp 2022-05-01 kl. 09:35.
Citera
2022-05-01, 09:37
  #1938
Medlem
Citat:
Ursprungligen postat av Bonnatorp
Mjo om det hade varir så enkelt, fast jag glömde säga att annansida är statiskt, och "annat" ändras dynamiskt och hämtas via selenium.

Edit: Hittade det, ska såklart köra url.replace(hemsida.se, hemsida.se/annansida)

Ja?

Kod:
ansid "/annansida"
namn "ändrat namn"
annat vad nu selenium hittar på för skoj
url
f"www.hemsida.se{ansid}/+{namn}+{annat}" 

Så enkelt är det, om det inte är något du gömmer för oss. Detta är bara en enkel url vi ändrar.
Citera
2022-05-28, 16:19
  #1939
Medlem
xeKs avatar
Citat:
Ursprungligen postat av Methos
Inte bara det; han har ju satt while loopen att snurra när find.drive.... är True samtidigt som han sedan sätter if-satsen på exakt samma kondition. blir while False blir också If-False, eller skall jag skriva; när if blir False så är ju while redan False.


Bör väl vara:
Kod:
i= 2
 xpath = "//div[@class='dataTables_paginate paging_simple_numbers']/span/a[text()=" + str(i) + "]"
while driver.find_element_by_xpath(xpath):
            
             driver.find_element_by_xpath(xpath).click()
             i = i + 1
             xpath = "//div[@class='dataTables_paginate paging_simple_numbers']/span/a[text()=" + str(i) + "]"
            time.sleep(5)


Varför två xpath? Jo för att du måste initiera xpath utanför loopen vid start. Annars kommer inte while att köra och om den körs kommer hela programmet att sprängas då driver.find_element_by_xpath(xpath) inte har någon xpath, variabeln finns ej. Så while måste ju köra driver.find_element_by_xpath(xpath) innan loopen och sedan uppdatera xpath sist innanför loopen. Så nu uppdaterar xpath med den nya i för att köras igen vid nästa while-iteration.


(i det här fallet är i= i+1 bättre)

Citat:
Ursprungligen postat av Enterprise
Det kanske är en smaksak, men om du inte är väldigt bekväm med Xpath från början så är enligt min bok CSS-selectors betydligt enklare. Dessa går att pröva direkt i browsern, eftersom de är standard Javascript (document.querySelector(css-selector)) vilket därmed fungerar i alla webläsare (tryck F12)

Finns även till Python och Selenium:
https://chercher.tech/python/css-sel...elenium-python

Lite mer:
https://exadel.com/news/how-to-choos...ole-lot-easier

Edit: Även Xpath går att köra i browsern (https://developer.mozilla.org/en-US/..._in_JavaScript)

Citat:
Ursprungligen postat av Bonnatorp
Koden för företagsregistren vart färdig iallafall.
Nu håller jag på att brottas med nästa sida.

Om jag har en sträng i form av en URL, hur lägger jag in en sträng mitt i den utan att tappa tecken?

www.hemsida.se/+namn+annat

ska bli

www.hemsida.se/annansida/+namn+annat

Så att jag skjuter in "annansida/" precis efter "www.hemsida.se/"

Förmodligen ska man inte sitta och stirra på skärmen och pyssla med sådant här utan avbrott i fem timmar, jag blev nog lite hjärntrött till slut.

Citat:
Ursprungligen postat av Methos
*Lätt

Kod:
ansid "/annansida"

urlf"www.hemsida.se{ansid}/+namn+annat" 

Citat:
Ursprungligen postat av Methos
Ja?

Kod:
ansid "/annansida"
namn "ändrat namn"
annat vad nu selenium hittar på för skoj
url
f"www.hemsida.se{ansid}/+{namn}+{annat}" 

Så enkelt är det, om det inte är något du gömmer för oss. Detta är bara en enkel url vi ändrar.


Tja, vill få stringet banan enndast utskrivet

x = {"apple","banana","cherry"}

Hur gör jag då?

Print(x.2)?
Citera
2022-05-28, 16:28
  #1940
Medlem
Bonnatorps avatar
Citat:
Ursprungligen postat av xeK
Tja, vill få stringet banan enndast utskrivet

x = {"apple","banana","cherry"}

Hur gör jag då?

Print(x.2)?
Jag kan inte så mycket om dicts, men brukar man inte ha en key till varje värde i en dict?

Hade det varit en list med [ ] istället för { } så hade du kunnat skriva print(x[1]) eftersom listor börjar på indexsiffran 0, så det andra värdet är 1, och drt tredje 2, osv.

Men hur man gör det med dicts är jag osäker på.
Citera
2022-05-28, 16:44
  #1941
Medlem
xeKs avatar
Citat:
Ursprungligen postat av Bonnatorp
Jag kan inte så mycket om dicts, men brukar man inte ha en key till varje värde i en dict?

Hade det varit en list med [ ] istället för { } så hade du kunnat skriva print(x[1]) eftersom listor börjar på indexsiffran 0, så det andra värdet är 1, och drt tredje 2, osv.

Men hur man gör det med dicts är jag osäker på.

Lists är enkelt, man kan bara googla upp det, vill få till det med dicts som du säger
Citera
2022-05-28, 17:15
  #1942
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av xeK
Tja, vill få stringet banan enndast utskrivet

x = {"apple","banana","cherry"}

Hur gör jag då?

Print(x.2)?
Det där är ingen dict. En dict har namn/värde-par:
https://www.w3schools.com/python/pyt...ctionaries.asp

Det där är ett set.
https://www.w3schools.com/python/python_sets.asp

Set är oordnade och saknar index. Det är inte meningen att man ska komma åt "andra" objektet.
Du kan iterera över settet. Om du vill få ut det andra elementet så använd lista istället.
Du kan omvandla ett set till en lista, men ordningen som settet kommer ut i listan är inte garanterad.

https://www.geeksforgeeks.org/retrie...om-python-set/ (kolla exempel 2)
__________________
Senast redigerad av Enterprise 2022-05-28 kl. 17:21.
Citera
2022-05-28, 17:23
  #1943
Medlem
xeKs avatar
Citat:
Ursprungligen postat av Enterprise
Det där är ingen dict. En dict har namn/värde-par:
https://www.w3schools.com/python/pyt...ctionaries.asp

Det där är ett set.
https://www.w3schools.com/python/python_sets.asp

Set är oordnade och saknar index. Det är inte meningen att man ska komma åt "andra" objektet.
Du kan iterera över settet. Om du vill få ut det andra elementet så använd lista istället.
Du kan omvandla ett set till en lista, men ordningen som settet kommer ut i listan är inte garanterad.

https://www.geeksforgeeks.org/retrie...om-python-set/ (kolla exempel 2)

Vad säger du nu brorsan?

http://www.bilddump.se/bilder/202205....185.45.53.jpg

Detta är statiskt programmering, det är inte lists vilket är retard, man ska programmera så enkelt som möjligt så allt sitter på ram så programmet körs smooth och riktigt snabbt
Citera
2022-05-28, 17:24
  #1944
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av xeK
Vad säger du nu brorsan?

http://www.bilddump.se/bilder/202205....185.45.53.jpg
x är en dict
y är ett set

x["banana"]=="spain"
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