• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pobieranie zawartości innej strony w celu wyciągnięcia konkretnych danych

Object Storage Arubacloud
0 głosów
1,395 wizyt
pytanie zadane 18 marca 2018 w PHP przez kevin Mądrala (5,010 p.)

Witam!

Zakładam ten wątek ponieważ nie jestem pewny czy prawidłowo podchodzę do problemu, zakładając ze mam serwis A na którym wyświetlają się pewne aukcje i chcę używając PHP i Symfony pobrać nazwy tych aukcji, zdjęcie oraz częściowy opis. Serwis w sam w sobie nie udostępnia żadnego API, do tego parametry opcji wyszukiwania są przesyłano jako GET. Chwile się nad tym zastanawiając przychodzi mi do głowy aby napisać swój paraser do tego ( nie wiem czy Symfony udostępnia mi taki komponent) pobranie strony z przesłanymi argumentami na pomocą $data = file_get_contents("abcd.com?param1=".$param1); i wyszukiwanie odpowiednich treści czyli: dane są w tabelce więc wyszukuje sobie konkretną tabelkę $table_start = strpos($data, '<table id="szukana_tabelka"'> Struktura tabelki w HTML jest stała więc konkretnych elementów wyszukuję podobnie np. opis elementu:

<?php
$el_name_start_pos = strpos($data, '<a title="', $table_start) + strlen('<a title="');
$el_name_ed_pos = strpos($data, '"', $el_name_start_pos);
$name = substr($data, $el_name_start_pos, $el_name_ed_pos - $el_name_start_pos);
?>

Powyższe, bardziej dopracowane instrukcje umieścić w pętli. Czy takim kierunkiem powinienem iść ?

Jeżeli serwis wymaga zalogowania abym zobaczył treść którą chcę pobrać to muszę POSTEM wysłać dane logowania, jeżeli korzysta z mechanizmu SESJI to mogę spokojnie pobierać jeżeli nie to muszę odbierać dane które mi zwróci i co z nimi zrobić ? Bądź przy każdym pobraniu zwartości innej strony zawsze się logować i serwer mi zwróci stronę po zalogowaniu

3 odpowiedzi

+1 głos
odpowiedź 18 marca 2018 przez Ehlert Ekspert (212,670 p.)
komentarz 18 marca 2018 przez kevin Mądrala (5,010 p.)
DOMCrawler to tylko sam paraser i tym nie obsłużę sesji logowania, a BrowserKit to taki klient bez parasera ? I dokładniej mówiąc potrzebuje jednego i drugiego ?
0 głosów
odpowiedź 6 kwietnia 2018 przez kevin Mądrala (5,010 p.)

Dobra działa BrowserKit i DOMCrawler, tylko co jeżeli mam stronę napisaną za pomocą Angular'a ? Aby uzupełniło się drzewo DOM to muszą się wykonać skrypty Angulara czyli muszę wykonać kod JavaScript. Czy za pomocą BrowserKit'a jestem w stanie to zrobić ?

komentarz 6 kwietnia 2018 przez UltraSF Stary wyjadacz (11,740 p.)
Prasuje przed wykonanie kodu js ?
komentarz 12 kwietnia 2018 przez kevin Mądrala (5,010 p.)
Tak
komentarz 12 kwietnia 2018 przez UltraSF Stary wyjadacz (11,740 p.)
Za pewne jest opcja do opóźnienia prasowania :)
komentarz 13 kwietnia 2018 przez kevin Mądrala (5,010 p.)
Jesteś tego pewny ? Bo do jednej strony specjalnie kombinuje z czymś innym co wszystko utrudnia...  Temat na stacku https://stackoverflow.com/questions/49682532/downloading-the-content-of-a-page-stretched-in-angular-through-browserkit
0 głosów
odpowiedź 6 kwietnia 2018 przez kemyyyt Bywalec (2,580 p.)
Jeżeli strona ma elementy takie jak angular użyj  tego https://sites.google.com/a/chromium.org/chromedriver/home z tym
https://github.com/facebook/php-webdriver/wiki/ChromeDriver

P.S
Więksi od ciebie mieli ten problem ... jak to wziąc i sie nie narobić :D

Podobne pytania

0 głosów
2 odpowiedzi 553 wizyt
pytanie zadane 11 kwietnia 2016 w PHP przez GaCeL Dyskutant (7,500 p.)
0 głosów
1 odpowiedź 250 wizyt
pytanie zadane 22 stycznia 2019 w PHP przez Kacperhehe Bywalec (2,930 p.)
0 głosów
0 odpowiedzi 498 wizyt
pytanie zadane 27 lipca 2021 w PHP przez mikey Użytkownik (820 p.)

92,568 zapytań

141,422 odpowiedzi

319,640 komentarzy

61,957 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...