#selenium

0
7
Cześć Wam!
Trochę czasu minęło od naszego ostatniego posta, ale już po naszym sezonie urlopowym, więc wracamy do gry!
Przypomnę, że ostatnio scrapowaliśmy podstronę Steama: Wiedźmin III:
https://letsscrape.com/posty/steam-store-scraping-strony-gry/
Natrafiliśmy na znany problem każdemu programiście: zmiana kodu spowodowała wywrotkę w innym miejscu w kodzie.
Wtedy podjęliśmy decyzję, że już czas wprowadzić testy! (Dlaczego teraz a nie na samym początku? Przecież testy się pisze przed kodem!)
Zobaczcie jak my do tego podchodzimy w projektach webscrapingowych:
https://letsscrape.com/posty/steam-store-scraper-testy/
Do następnego posta!
ps wszelkie reakcje na post mile widziane, to nam daje siłę aby tworzyć tego typu treści
#programowanie #selenium #webdriver #webscraping #scraping #datamining #csharp #tdd #testowanie #testowanieoprogramowania
21dc50e4-9b6a-427b-9241-415b18ae8edc
1

O, to się zdecydowanie przyda do moich dziesiątek scraperów rozsianych tu i tam. xD

Zaloguj się aby komentować

Cześć Wszystkim!
To już nasz czwarty post pokazujący jak wygląda nasza praca!
A co robimy? Prowadzimy firmę zajmującą się pisaniem scraperów i pobieraniem danych z internetu.
Pisząc scraper do Steam'a staramy się opisać, ze szczegółami czego można się spodziewać w takich projektach.
Po krótkim wstępie: 
https://letsscrape.com/posty/steam-store-scraper-wstep/
wzięliśmy się za analizę i rozgryzanie kodu Steama:
https://letsscrape.com/posty/rozgryzamy-kod-steama/
po skutecznej znalezieniu mechanizmów jakie rządzą na Steamie, przeszliśmy do pobieraniem danych z listingów gier:
https://letsscrape.com/posty/kod-pobierania-danych-ze-steam-store/
natomiast dzisiaj, będziemy pisać wyciąganie danych z samej strony gry:
https://letsscrape.com/posty/steam-store-scraping-strony-gry/
a jest tych danych sporoooOOooooOooo.
Grę jaką wieliśmy na warsztat chyba każdy (Polak) zna lub o niej przynajmniej słyszał!
Zapraszamy do lektury!
Komentarze, pytania, uwagi (również te krytyczne) mile widziane!
#programowanie #selenium #webdriver #webscraping #scraping #datamining #csharp #chwalesie
f514b8d3-23d5-4e67-925d-043e984e3e59
1
Cześć Wszystkim!
To znowu my! Prowadzimy firmę zajmującą się pisaniem scraperów i pobieraniem danych z internetu.
Chcielibyśmy Wam pokazać jak wygląda nasza praca na przykładzie scrapowania danych ze Steam'a!
Ostatnio zajmowaliśmy się rozgryzaniem kodu Steama o czym możecie przeczytać tutaj:
https://letsscrape.com/posty/rozgryzamy-kod-steama/ - gorąco zachęcam!
Mając już tę wiedzę dzisiaj będziemy pisać kod scrapujący dane z listingu gier.
https://letsscrape.com/posty/kod-pobierania-danych-ze-steam-store/
Co się w najnowszym poście znalazło?
- trochę kodu w csharp
- dodatkowa rozkmina działania serwisu
- testowanie kodu
Zapraszamy do lektury!
Komentarze, pytania, uwagi (krytyczne) oraz okejki mile widziane!
#programowanie #selenium #webdriver #webscraping #scraping #datamining #csharp
84116dac-28a4-4890-92ab-b5e691b96942
12

Prowadzimy firmę zajmującą się pisaniem scraperów i pobieraniem danych z internetu.


I jak na tym niby zarabiacie ? W sensie ok,rozumiem, pozyskujecie jakieś dane,może nawet są one sensownie sformatowane ale kto to potem głównie kupuje ? Oczywiście nie żebym chciał od was info o konkretnych klientach czy coś,TO JEST OCZYWIŚCIE WASZA TAJEMNICA PRZEDSIĘBIORSTWA itd,ale na jakiego typu dane najczęściej macie klientów to może napisać możecie ?


z mojego wstępnego OSINTu na waszej stronce wychodzi,że to jakieś statystyki pod marketing - mam rację?


W sensie - surowiec do #datamining to jest,ale tylko surowiec,więc dziwi mnie trochę,że tak wąska specjalizacja i jakoś to jedzie. No chyba,że startupem jesteście,wtedy mniej dziwi.

@dsol17 Raczej nie jedzie, ale jakaś próba swojego biznesu jest

Ze swojego doświadczenia takie scrapery są bardzo słabo opłacalne jeżeli nie robisz tego na bardzo szeroką i profesjonalną skalę a liczysz na to, że uda ci się trafić w trend użyteczności (np. zescrapowanie nr ksiąg wieczystych dla każdej działki w momencie, gdy to było możliwe na geoportalu itp).


Napisałem kilka scraperów bardziej pod siebie typu OLX, otomoto, allegro czy inne, zazwyczaj opłacalność tego kończy się już zanim stworzysz projekt, więc raczej jest to dla własnej satysfakcji

Komentarz usunięty

Ooo kocham takie kodowanie, pisałem kilka wtyczek do aplikacji jakie mamy u mnie w firmie i to jak słabo zaprogramowane są aplikacje topowych firm to nóż się w kieszeni otwiera. Przeszedłem piekło z elementami iframe więc już za dużo mnie nie zaskoczy

Zaloguj się aby komentować

Cześć Wszystkim!
Prowadzimy firmę zajmującą się pisaniem scraperów i pobieraniem danych z internetu.
Chcielibyśmy Wam pokazać jak wygląda nasza praca na przykładzie scrapowania danych ze Steam'a!
Ostatnio zrobiliśmy mały zarys pracy oraz napisaliśmy scrapowanie tagów:
 https://letsscrape.com/posty/steam-store-scraper-wstep/
Dzisiaj zajmiemy się analizą i rozgryzaniem kodu Steam'a.
Brzmi fajnie, lecz post jest dosyć ciężki i skomplikowany.
Z drugiej jednak strony pokazujemy jak wygląda praca z namierzaniem danych i próbami ekstrakcji ich. Oczywiście można uprościć ten kod korzystając z np. Selenium, ale jak poprzednio pisaliśmy sęk w tym, aby scraper był szybki i zużywał jak najmniej zasobów. Dlatego zostajemy przy HttpClient mimo, że wymaga to więcej pracy od nas.
 https://letsscrape.com/posty/rozgryzamy-kod-steama/
Zapraszamy do lektury!
Komentarze, pytania, uwagi (krytyczne) oraz PIORUNY mile widziane!
#programowanie #selenium #webdriver #webscraping #scraping #datamining #csharp
7b53512d-6dd8-4f20-bbc0-42e10f67aa3e
8

Scrapowanie danych często wymaga takiej analizy i zabawy w detektywa ale daje to satysfakcję.

Czasami trzeba używać Selenium jak na stronie dużo danych doładowywanych jest dynamicznie albo są zabezpieczenia antybotowe.

@szoz świetnie to określiłes "w detektywa", dokładnie tak jest! najlepsza zabawa jest właśnie z zabezpieczeniami antybotowymi "pokonanie" jakiegoś rozwiązania, z którego duże sajty korzystają daje rzeczywiście satysfakcję!

Scrapowanie nie podchodzi czasami pod celowe bombardowanie serwerów zapytaniami? Jak to wygląda pod względem prawnym?

@nazwa_uzytkownika


https://informatykzakladowy.pl/nieliczni-fani-portalu-albicla/#more-3975


wspomniany już LinkedIn koncertowo przewalił sprawę w sądzie. Scrapowanie publicznie dostępnych danych (w tym profili na Albicli) jest w pełni legalne i nie różni się niczym od ręcznego odwiedzania profili. Zupełnie inną sprawą byłoby gdyby scraping spowodował niedostępność usługi i to już mogłoby być potraktowane jako atak DoS i tutaj Albicla miałaby w sądzie pole do popisu.

@nazwa_uzytkownika zależy jak się zorganizuje scrapowanie. Zawsze można sie przyczepić ale generalnie jak to się robi z głową to jest wszystko OK

Zaloguj się aby komentować

Cześć Wszystkim
Prowadzimy firmę zajmującą się pisaniem scraperów i pobieraniem danych z internetu.
Chcielibyśmy Wam pokazać jak wygląda nasza praca!
Dużo programistów myśli, że najważniejszy jest tutaj kod jak i sam scraper  
Oczywiście są to rzeczy ważne, ale nie najważniejsze.
Przeżyjcie razem z nami przygodę obserwując jak powstaje: scraper danych – Steam Store!
Dla zainteresowanych mamy nadzieję, że kliknięcie w link:
https://letsscrape.com/posty/steam-store-scraper-wstep/
nie będzie stanowić problemu!
O czym jest pierwszy post?
porównujemy sposoby pobierania HTMLa (HttpClient Vs Przeglądarka)
pokazujemy, że pisanie scraperów wcale nie jest takie proste jak się wydaje
szukamy pierwszej podstrony na Steamie do scrapowania
piszemy kod scrapujący
sprawdzamy zabezpieczenia strony
wrzucamy parę rad dla osób, które też chciałyby sobie "poskrapować"
Zapraszamy do lektury!
Komentarze, pioruny mile widziane
#programowanie #selenium #csharp #webscraping #letsscrape
f94d972e-8877-46b8-a5cf-62b6414a5cac
5
Ktoś miał podobny problem z pycharm? Najpierw wywaliło mi w piątek selenium i nie odpalił mi się, żaden test. A dzisiaj to #programowanie #python #selenium
Internal error. Please refer to https://jb.gg/ide/critical-startup-errors
java.lang.NullPointerException
   at java.desktop/javax.swing.plaf.basic.BasicTextUI$RootView.paint(BasicTextUI.java:1524)
   at java.desktop/javax.swing.plaf.basic.BasicTextUI.paintSafely(BasicTextUI.java:753)
   at java.desktop/javax.swing.plaf.basic.BasicTextUI.paint(BasicTextUI.java:911)
   at java.desktop/javax.swing.plaf.basic.BasicTextUI.update(BasicTextUI.java:890)
   at java.desktop/javax.swing.JComponent.paintComponent(JComponent.java:800)
   at java.desktop/javax.swing.JComponent.paint(JComponent.java:1077)
   at java.desktop/javax.swing.JComponent.paintToOffscreen(JComponent.java:5263)
   at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBufferedFPScales(RepaintManager.java:1718)
   at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1627)
   at java.desktop/javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1566)
   at java.desktop/javax.swing.RepaintManager.paint(RepaintManager.java:1333)
   at java.desktop/javax.swing.JComponent._paintImmediately(JComponent.java:5211)
   at java.desktop/javax.swing.JComponent.paintImmediately(JComponent.java:5021)
   at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:868)
   at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:851)
   at java.base/java.security.AccessController.doPrivileged(Native Method)
   at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
   at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:851)
   at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:826)
   at java.desktop/javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:775)
   at java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1901)
   at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
   at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
   at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
   at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
   at java.base/java.security.AccessController.doPrivileged(Native Method)
   at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
   at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
   at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:421)
   at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
   at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
   at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:117)
   at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190)
   at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
   at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
   at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
   at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
   at java.base/java.security.AccessController.doPrivileged(Native Method)
   at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
   at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
   at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:421)
   at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
   at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
   at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
   at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
   at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
   at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
-----
Your JRE: 11.0.9.1+11-b1145.63 amd64 (JetBrains s.r.o.)
C:\Program Files\JetBrains\PyCharm Community Edition 2020.3.2\jbr
4deaf552-7762-4553-a63e-b61303006e3c
1

@Musa spróbuj usunąć katalogi cache, albo zreinstalować?

Zaloguj się aby komentować

Hejka, czy ktoś ma doświadczenie w testowaniu e2e aplikacji webowych i webapi za pomocą narzędzi takich jak postman, selenium
Szczególnie chodzi o tworzenie scenariuszy i pisanie testów automatycznych w postmanie i selenium ( nie chodzi tu o Unit Testy na poziomie kodu)
Polecacie jakieś konkretne artukuly lub kanały na youtube które warto obejrzeć w tym kierunku ? (wolałbym po angielsku)
2

Zaloguj się aby komentować