Skocz do zawartości

Zdjęcie
- - - - -

W jaki sposób stworzyć parser stron

parser parsowanie pająk robot

14 odpowiedzi w tym temacie
  • Zaloguj się, aby dodać odpowiedź
zonic

    WT Elite

  • 2 911 postów
    • Czas spędzony online: 134d 2h 28m 23s
472
Znakomita!
  • LocationToruń

Napisano 11 października 2013 - 13:33

#1

Witajcie. 

Chcę stworzyć parser stron www. Miało by to wyglądać tak:

- Na mojej stronie mam formularz z dwoma polami i przyciskiem. W pierwszym polu wpisuję pewien numer, w drugim z listy rozwijanej wybieram nazwę jakiejś strony i wciskam OK.

- Następnie parser na wybranej stronie we wskazanym formularzu, który tam się znajduję wkleja ten numer i potwierdza akcję. Ze strony wynikowej odpowiednie fragmenty HTML zapisuje mi do jakiegoś XML czy czegoś takiego.

- Ja na swojej stronie jako wynik wyświetlam właśnie dane w postaci tabeli pobrane z tego XMLa.

Ma sens takie rozwiązanie? Można to w miarę łatwo zrealizować?
W sieci jest masa informacji o parserach. Ale najpierw chciałbym przeanalizować schemat działania ;)


  • 0

vms

    Użytkownik

  • 81 postów
    • Czas spędzony online: 5h 33m 5s
28
Bardzo dobra

Napisano 15 października 2013 - 09:36

#2

Jeśli dobrze rozumiem to chcesz wysyłać formularze z innych stron. W tym wypadku najlepiej przygotować dane jakie są wysyłane w poszczególnych formularzach i wysłać je bezpośrednio na adres podany w parametrze 'action' i przechwycić zwrot. Można do tego użyć curl'a.


  • 1

zonic

    WT Elite

  • 2 911 postów
    • Czas spędzony online: 134d 2h 28m 23s
472
Znakomita!
  • LocationToruń

Napisano 15 października 2013 - 10:12

#3

Dane, które będę wysyłać tymi innymi formularzami najpierw zostają wprowadzone na mojej stronie w moim formularzu. Jest sens zapisywać je gdzieś do bazy, czy pliku? Nie mogę po wypełnieniu formularza trzymać tego w jakiejś zmiennej?


  • 0

Rodzyn

    Nowy użytkownik

  • 36 postów
    • :
0
Neutralna

Napisano 15 października 2013 - 15:32

#4

Najlepiej jest to zapisywać do bazy :), gdyż ten drugi czy kolejny serwer na który chcesz wysłać dane bez problemu będzie mógł odczytać to co zostało wprowadzone, a co do pliku występują ryzyka, np. błąd przy wysyłaniu pliku czy przerwaniu łącza i wtedy tylko część zostanie przesłana a część nie, poza tym z czasem ten plik osiągnie spore rozmiary i przesyłanie za każdym razem będzie trwało coraz dłużej.


  • 0

zonic

    WT Elite

  • 2 911 postów
    • Czas spędzony online: 134d 2h 28m 23s
472
Znakomita!
  • LocationToruń

Napisano 15 października 2013 - 16:37

#5

Najlepiej jest to zapisywać do bazy :), gdyż ten drugi czy kolejny serwer na który chcesz wysłać dane bez problemu będzie mógł odczytać to co zostało wprowadzone, a co do pliku występują ryzyka, np. błąd przy wysyłaniu pliku czy przerwaniu łącza i wtedy tylko część zostanie przesłana a część nie, poza tym z czasem ten plik osiągnie spore rozmiary i przesyłanie za każdym razem będzie trwało coraz dłużej.

Z tym, że w zasadzie ja nie potrzebuję przechowywać tego numer długo (bo to tylko ciąg cyfr). Potrzebny on jest tylko do wypełnienia formularza na zewnętrznej stronie.


  • 0

vms

    Użytkownik

  • 81 postów
    • Czas spędzony online: 5h 33m 5s
28
Bardzo dobra

Napisano 16 października 2013 - 08:13

#6

Dane, które będę wysyłać tymi innymi formularzami najpierw zostają wprowadzone na mojej stronie w moim formularzu. Jest sens zapisywać je gdzieś do bazy, czy pliku? Nie mogę po wypełnieniu formularza trzymać tego w jakiejś zmiennej?

 

Nie musisz tego zapisywać, jeśli nie chcesz. Wystarczy że w skrypcie obługującym formularz przekażesz dane przez curl do skryptu/formularza zewnętrznego i otrzymasz zwrot. Ten zwrot wyświetlasz swojemu użytkownikowi. Dla pewności ustalasz timeout, jakby serwer zewnętrzny nie odpowiedział.


  • 0

zonic

    WT Elite

  • 2 911 postów
    • Czas spędzony online: 134d 2h 28m 23s
472
Znakomita!
  • LocationToruń

Napisano 16 października 2013 - 09:49

#7

Nie musisz tego zapisywać, jeśli nie chcesz. Wystarczy że w skrypcie obługującym formularz przekażesz dane przez curl do skryptu/formularza zewnętrznego i otrzymasz zwrot. Ten zwrot wyświetlasz swojemu użytkownikowi. Dla pewności ustalasz timeout, jakby serwer zewnętrzny nie odpowiedział.

Ok. Tak też myślałem :) A żeby tę zwrotkę z danymi wyświetlić na mojej stronie bez jej odświeżania to niezbędne jest jquery z ajaxem?


  • 0

vms

    Użytkownik

  • 81 postów
    • Czas spędzony online: 5h 33m 5s
28
Bardzo dobra

Napisano 18 października 2013 - 08:43

#8

Ok. Tak też myślałem :) A żeby tę zwrotkę z danymi wyświetlić na mojej stronie bez jej odświeżania to niezbędne jest jquery z ajaxem?

 

Jeżeli nie chcesz przeładować strony po wysłaniu formularza to ajax będzie niezbędny, jquery zdwcydowanie ułatwi sprawę chociaż konieczne nie jest.


  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 21 października 2013 - 08:38

#9

$.ajax() i po sprawie :)


  • 0

webDeveloper


zonic

    WT Elite

  • 2 911 postów
    • Czas spędzony online: 134d 2h 28m 23s
472
Znakomita!
  • LocationToruń

Napisano 21 października 2013 - 10:34

#10

Możesz rozwinąć swoją myśl? :) Zainwestowałem niedawno w książkę PHP & AJAX, ale nie miałem czasu do niej zajrzeć :) Każda wskazówka będzie cenna ;)

A przypominam, że jeśli chodzi o technologie backendowe to jestem w du... :)


  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 21 października 2013 - 10:50

#11

Jak ma się robić post ajaxowy po wysłaniu formularza to dajesz tak:

$(form).submit(function(e){
  e.preventDefault(); //dzięki temu form się nie wyśle
  $.post("/form/send.php",$(this).serialize(),function(respond){
    console.log(respond);  //tutaj robisz to co chccesz zeby sie zrobilo po wyslaniu formularza, a respond to jest wartosc zwrocona przez posta :)
  });
  return false;
});

  • 1

webDeveloper


zonic

    WT Elite

  • 2 911 postów
    • Czas spędzony online: 134d 2h 28m 23s
472
Znakomita!
  • LocationToruń

Napisano 21 października 2013 - 11:03

#12

 

Jak ma się robić post ajaxowy po wysłaniu formularza to dajesz tak:

$.(form).submit(function(e){
  e.preventDefault(); //dzięki temu form się nie wyśle
  $.post("/form/send.php",$(this).serialize(),function(respond){
    console.log(respond);  //tutaj robisz to co chccesz zeby sie zrobilo po wyslaniu formularza, a respond to jest wartosc zwrocona przez posta :)
  });
  return false;
});

Ok, dzięki. Muszę w końcu do tego przysiąść tak na poważnie i postudiować/pomęczyć, bo jakoś zebrać się nie mogę.


  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 21 października 2013 - 11:28

#13

Tam był mały błąd :) na początku $.(form)... ma być bez kropki, czyli $(form)... :) Gdzie form to oczywiście form :D


  • 0

webDeveloper


writen

    Stary wyjadacz

  • 458 postów
    • Czas spędzony online: 29d 22h 59m 44s
133
Znakomita!

Napisano 21 października 2013 - 20:40

#14

Ale chyba raczej tak $("form")  co nie ?


  • 0

logo-green-dark.png


unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 22 października 2013 - 09:49

#15

nie jeżeli odnosząc się do

 

 

 

Gdzie form to oczywiście form

 

wcześniej mamy:

var form = $("#jakisForm");

:D


  • 0

webDeveloper





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych