Thread View: pl.comp.lang.php
7 messages
7 total messages
Started by Leszek Zur
Wed, 24 Sep 2014 17:15
curl - poruszanie sie po portalu
Author: Leszek Zur
Date: Wed, 24 Sep 2014 17:15
Date: Wed, 24 Sep 2014 17:15
20 lines
1922 bytes
1922 bytes
Chcę napisać sobie pod linuksem w php za pomocą curla skrypt który ma wykonać kilka rzeczy: - zalogować się na pewien portal - akurat jest to portal świadczeniodawcy NFZ - wyklikać kilka linków wewnątrz portalu aby dojść do pewnej opcji - wypełnić formularz - pobrać wygenerowane dane na podstawie wypełnionego powyżej formularza (około 2500 stron w pętli) i zapisać do pliku wyniki I mam problem bo jeśli chodzi o logowanie to idzie normalnie ale potem zaczynają się różne cuda, które są realizowane za pomocą javascriptu. Curl nie obsługuje javascriptu i nie chce to działać. Czy wiecie jak to obejść. Czy jest może jakaś biblioteka do obsługi javascriptu w curlu ? A może zamiast curla posłużyć się innym "emulatorem" przeglądarki pod konsolą. Jeśli tak to jakim. A może są jakieś rozszerzenia do firefoxa lub chroma umożliwiające wykonanie tych czynności ? Nie chce mi się analizować co tam wyczynia ten javascript. Pozdrawiam - Leszek
Re: curl - poruszanie sie po portalu
Author: Piotr Janczura
Date: Wed, 24 Sep 2014 18:26
Date: Wed, 24 Sep 2014 18:26
26 lines
1862 bytes
1862 bytes
W dniu 24.09.2014 o 19:15, Leszek Zur pisze: > Chcę napisać sobie pod linuksem w php za pomocą curla skrypt który ma > wykonać kilka rzeczy: > - zalogować się na pewien portal - akurat jest to portal > świadczeniodawcy NFZ > - wyklikać kilka linków wewnątrz portalu aby dojść do pewnej opcji > - wypełnić formularz > - pobrać wygenerowane dane na podstawie wypełnionego powyżej formularza > (około 2500 stron w pętli) i zapisać do pliku wyniki > 1. Może portal udostępnia gotowe API do komunikacji z nim, które można wywołać i komunikować się z systemem zamiast analizować całą zwróconą stronę w html modyfikowaną przez zaciągnięte skrypty w js ?? 2. Sprawdź czy js na tej stronie nie zajmuje się wymianą danych z portalem. Jeżeli tak jest to wykonaj tylko te odwołania, które dotyczą wymiany danych. Wątpię, że strona nie jest zabezpieczona przed takim "atakiem" 3. jeżeli konsola i js to node.js -- Janczura Piotr
Re: curl - poruszanie sie po portalu
Author: Borys Pogoreło
Date: Wed, 24 Sep 2014 18:42
Date: Wed, 24 Sep 2014 18:42
21 lines
1623 bytes
1623 bytes
Dnia Wed, 24 Sep 2014 19:15:52 +0200, Leszek Zur napisał(a): > I mam problem bo jeśli chodzi o logowanie to idzie normalnie ale potem > zaczynają się różne cuda, które są realizowane za pomocą javascriptu. Ile by nie naładowali javascriptu, to i tak kończy się to wysłaniem zapytania HTTP. Podejrzyj co tam leci do serwera i z powrotem, po czym to odtwórz w cURL-u. Polecam wtyczkę "Live HTTP Headers" do Firefoksa. > Curl nie obsługuje javascriptu i nie chce to działać. Czy wiecie jak to > obejść. Czy jest może jakaś biblioteka do obsługi javascriptu w curlu ? cURL służy do komunikacji z serwerami, nie do przetwarzania odpowiedzi. > Nie chce mi się analizować co tam wyczynia ten javascript. Nie ma sensu, interesuje Cię tylko efekt. -- Borys Pogoreło borys(#)leszno,edu,pl
Re: curl - poruszanie sie po portalu
Author: XJL
Date: Thu, 25 Sep 2014 12:22
Date: Thu, 25 Sep 2014 12:22
7 lines
1065 bytes
1065 bytes
W dniu 24.09.2014 o 19:15, Leszek Zur pisze: > A może zamiast curla posłużyć się innym "emulatorem" przeglądarki pod > konsolą. Jeśli tak to jakim. http://scrapy.org/ http://phantomjs.org/
Re: curl - poruszanie sie po portalu
Author: elfau
Date: Thu, 25 Sep 2014 13:26
Date: Thu, 25 Sep 2014 13:26
20 lines
1571 bytes
1571 bytes
W dniu 24.09.2014 o 19:15, Leszek Zur pisze: > Chcę napisać sobie pod linuksem w php za pomocą curla skrypt który ma > wykonać kilka rzeczy: > - zalogować się na pewien portal - akurat jest to portal > świadczeniodawcy NFZ > - wyklikać kilka linków wewnątrz portalu aby dojść do pewnej opcji > - wypełnić formularz > - pobrać wygenerowane dane na podstawie wypełnionego powyżej formularza > (około 2500 stron w pętli) i zapisać do pliku wyniki Z ciekawości: chodzi o deklaracje do POZ? > A może są jakieś rozszerzenia do firefoxa lub chroma umożliwiające > wykonanie tych czynności ? Ja to kiedyś robiłem firefoksowym dodatkiem iMacros, który wyrzucał mi każdą stronę do csv, a potem sumowałem to wszystko lokalnie skryptem sh. Straszna rzeźba, BTW... M.
Re: curl - poruszanie sie po portalu
Author: Leszek Zur
Date: Thu, 25 Sep 2014 21:43
Date: Thu, 25 Sep 2014 21:43
14 lines
1562 bytes
1562 bytes
W dniu 2014-09-25 15:26, elfau pisze: > > Z ciekawości: chodzi o deklaracje do POZ? > Tak > > Ja to kiedyś robiłem firefoksowym dodatkiem iMacros, który wyrzucał mi > każdą stronę do csv, a potem sumowałem to wszystko lokalnie skryptem sh. Świetny dodatek. Tego właśnie szukałem. Możesz pokazać swój skrypt ? Leszek
Re: curl - poruszanie sie po portalu
Author: elfau
Date: Fri, 26 Sep 2014 11:34
Date: Fri, 26 Sep 2014 11:34
58 lines
2790 bytes
2790 bytes
W dniu 25.09.2014 o 23:43, Leszek Zur pisze:
> Świetny dodatek. Tego właśnie szukałem. Możesz pokazać swój skrypt ?
Jasne. Ale obawiam się, że jest to wersja do 2013. Od tego roku
deklaracje są inaczej prezentowane, a ja już nie miałem potrzeby tego
apdejtować. Może po przeróbkach coś z tego będzie.
Sposób użycia. Trzeba ręcznie wejść w każdą grupę wiekową i ręcznie
wyszukać pierwsze 1-100 deklaracji. Potem uruchamiasz skrypt w pętli n =
ceil(ilosc_deklaracji_w_danej_grupie/100) razy.
Na pewno dałoby się to poprawić i "doautomatyzować", ale nigdy nie
miałem czasu. A to działało:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
VERSION BUILD=7031111
TAB T=1
' nie chcemy ogladac okienek z wyextractowanymi tabelkami
SET !EXTRACT_TEST_POPUP NO
' portal dziala jak gowno, wiec...
SET !TIMEOUT_PAGE 120
TAG POS=1 TYPE=TABLE ATTR=ID:ctl00_ContentPlaceHolder1_gvwDeklaracje
EXTRACT=TXT
SAVEAS TYPE=EXTRACT FOLDER=* FILE=tab_{{!NOW:yymmdd_hhnnss}}.csv
WAIT SECONDS=2
' tu wyciagamy to, co w polach input
TAG POS=1 TYPE=INPUT:TEXT ATTR=ID:ctl00_ContentPlaceHolder1_txtStartRow
EXTRACT=TXT
SET !VAR1 {{!EXTRACT}}
SET !EXTRACT NULL
TAG POS=1 TYPE=INPUT:TEXT ATTR=ID:ctl00_ContentPlaceHolder1_txtLastRow
EXTRACT=TXT
SET !VAR2 {{!EXTRACT}}
SET !EXTRACT NULL
' teraz w !VAR1 mamy 1, a w !VAR2 mamy 100
ADD !VAR1 100
ADD !VAR2 100
' a teraz w !VAR1 mamy 101, a w !VAR2 mamy 200 i wypelniamy nimi
stosowne pola
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:aspnetForm
ATTR=ID:ctl00_ContentPlaceHolder1_txtStartRow CONTENT={{!VAR1}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:aspnetForm
ATTR=ID:ctl00_ContentPlaceHolder1_txtLastRow CONTENT={{!VAR2}}
TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:aspnetForm
ATTR=ID:ctl00_ContentPlaceHolder1_btnZnajdz
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Powodzenia.
M.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads