Skocz do zawartości

Wydłubywanie danych z HTML


Maximus Marius

Rekomendowane odpowiedzi

A serwerowni google pracuje!=parsuje 1.000 000 Chińczyków i przegląda strony świata. Dobrze, że napisałeś:

jak dla mnie nie da sie czegos takiego napisac.
:dirol:

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Mion, tym razem stwierdzę że czegoś takiego nie da się napisać :dirol: (oczywiście jeżeli zrozumiałem idee autora)

Maximus-Rex chce z każdej możliwej strony wyciągnąć jakieś dane za pomocą jednego szablonu(czy też jednego regexpa). Przekładając na przykład:

Chce wyciągnąć 12 pozycję z wyników Live, Yahoo i Google.

Używając wyrażenia regularnego którego będę mógł użyć na każdej z tych stron, a jak przyjdzie potrzeba to dołożyć kolejne np. Onet, WP, NetSprint.

stopka usunieta z wpoodu wirusa na stronie docelowej

Odnośnik do komentarza
Udostępnij na innych stronach

Nie che za pomocą jednego szablonu wyciągnąć dowolnych danych z dowolnej strony.

Dla każdej strony tworzył bym oddzielny szablon, ale kod który służył by do wyciągania danych byłby wspólny.

Chciałbym wyszukiwać elementy HTML na trochę wyższym poziomie abstrakcji.

Tak jak jest jeżyk C i jest Asembler. C jest jezykiem wyższego poziomu, ale tak na prawdę każda instrukcja w C jest zamieniana puzniej na asemblera. Tak samo ja chciałbym tworzyć to czego szukam nie za pomocą wyrazzen regularnych i kodu PHP tylko raczej za pomocą pewnych znaczników.

Inny przykład:

Załóżmy że chcemy z 3 róznych blogów pozyskać posty

BLOG_A.pl, BLOG_B.pl, BLOG_C.pl

Każdy blog uzywa innego systemu blogowania, i inaczej zbudowany jest HTML

BLOG_A.pl

<div id=post>
<div id=tytul> Jakis tam tytuł</div>
<div id=tresc>Jakas tresc</div> 
</div>

BLOG_B.pl

<table>
<tr class=tytyl_postu> Jestem tytuł postu
</tr>
<tr class=body_postu>A ja jestem tresc
</tr> 
</table>

BLOG_C.pl

<table>
<tr>
<td>
<div id=tytulek> Jakis tam tytuł dowolny moze być</div>
<div id=tresc_jakastam>Jakas tresc tutaj mozna poszaleć</div> 
</td>
</tr>
</table>

Wszystkie trzy strony z mojego punktu widzenia zawierają ten sam rodzaj informacji (TYTUŁ i TREŚĆ) tyle tylko że róznie ktoś zrobił HTML.

Do parsowania dowolnych blogów używał bym jednego i tego samego kodu PHP, róznice były by w plikach szablonów

"nazwa_szablonu_a.txt" "nazwa_szablonu_b.txt" "nazwa_szablonu_c.txt"

$ob =new("https://adres_blog-a.php");

 if($ob->Rodzaj_Bloga == "A")
 $ob->Wczytaj_szablon("nazwa_szablonu_a.txt")

 if($ob->Rodzaj_Bloga == "B")
 $ob->Wczytaj_szablon("nazwa_szablonu_b.txt")

 if($ob->Rodzaj_Bloga == "C")
 $ob->Wczytaj_szablon("nazwa_szablonu_c.txt")
 if($ob->Sa_Dane())
 {
 echo "Tytuł = $ob->wartosci['TYTUŁ'] <br>"; 
 echo "Tresc = $ob->wartosci['TRESC'] <br>"; 
 }
 else
 {
  echo "Danych brak";
 }

Szablony dla poszczególnych blogów wygladały by mniej więcej tak:

BLOG_A.pl

<div id=post>
<div id=tytul>{{TYTUŁ}}</div>
<div id=tresc>{{TRESC}}</div> 
</div>

BLOG_B.pl

<table>
<tr class=tytyl_postu>{{TYTUŁ}}
</tr>
<tr class=body_postu>{{TRESC}}
</tr> 
</table>

BLOG_C.pl

<table>
<tr>
<td>
<div id=tytulek>{{TYTUŁ}}</div>
<div id=tresc_jakastam>{{TRESC}}</div> 
</td>
</tr>
</table>

Jak napiszę to pokażę o co mi chodzi :P

Odnośnik do komentarza
Udostępnij na innych stronach

Widzę Maximus-Rex, że Ty co chwila o czym innym! Ostatnio podany przykład-funkcjonalność jest zaimplementowana w systemie szablonów np. smarty wystarczy tylko zdefiniować jako znaczniki pary {{ i }} i wstawiać sobie dowolne zmienne {{$TYTUŁ}} {{$TRESC}} itd a w pliku PHP inicjować zmienne np:

$smarty->asign('TYTUŁ','To jest tytul strony...');

$smarty->asign('TRESC','To jest tresc strony...');

$smarty->display('szablon.tpl');

I masz uniwersalny parserek :P

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Widzę Maximus-Rex, że Ty co chwila o czym innym! Ostatnio podany przykład-funkcjonalność jest zaimplementowana w systemie szablonów np. smarty wystarczy tylko zdefiniować jako znaczniki pary {{ i }} i wstawiać sobie dowolne zmienne {{$TYTUŁ}} {{$TRESC}} itd a w pliku PHP inicjować zmienne np:
$smarty->asign('TYTUŁ','To jest tytul strony...');

$smarty->asign('TRESC','To jest tresc strony...');

$smarty->display('szablon.tpl');

I masz uniwersalny parserek ;)

Ewidentnie widzę że mam problemy z przekazywaniem informacji "o co mi chodzi" :P

Nie chcę generować stron na podstawie szablonów , chcę wydobywać informacje z plików HTML :P (tylko że strukturę tego co chcę wydobywać nie che zapisywać w kodzie aplikacji ale w zewnetrznych szablonach )

Odnośnik do komentarza
Udostępnij na innych stronach

Niepotrzebnie komplikujesz

$ob =new("https://adres_blog-a.php");
$ob->Wczytaj_szablon("{$ob->Rodzaj_Bloga}.txt");
if($ob->Sa_Dane())
...

Kod została napisany w wersji "łopatologocznej" bez żadnych skrótów myslowych aby podkreślić o co mi chodzi :P

Odnośnik do komentarza
Udostępnij na innych stronach

Myślę że parser taki jak googla byłby łatwiejszy do zrobienia. Całą sprawę ułatwia standard html z tego względu że wiadomo gdzie jest link i anchor lub tytuł (<h1> <b>) i treść itp.

A te szblony to jest pakowanie się robienie dla każdej strony innego wzorca dzięki ktoremu można bedzie rozpoznać i wydobyć ten tytuł i treść. Bo w tym przypadku nie ma standardu, ktorego bedzie używać jedna i druga strona.

Czy to może jest jakiś projekt wysysacza contentu z innych stron?

.

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności