Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Jak wyciągnąć dane ze strony html ?
Forum PHP.pl > Forum > PHP
xPatryk
Witam

Aktualnie tworzę baze ogłoszeń Jeździeckich w ramach Jeździeckiego Centrum Informacyjnego www.QnWortal.com ---

http://www.qnwortal.com/modules.php?name=ogloszenia

Ogólnym celem Jeździeckiego Centrum Informacyjnego jest ułatwienie koniarzom dostępu do informacji. W Internecie pełno jest bezwartościwych stron, na których znajduje się pelno dziwnych i nieprzemyślanych tekstów/porad...

Z tego względu staramy się selekcjonować te materiały, które są przydatne dla społeczeństwa koniarzy.

Podobnie jest z ogłoszeniami... Po co użytkownik ma przeglądać setke stron z 3-4 ogłoszeniami, skoro wszsytkie może mieć w zasięgu 2 kliknięć myszką questionmark.gif?

Tu pojawia się problem...

Jak aktualizować setki ogłoszeń..

Dlatego też chcę stworzyć skrypt w php, który "pozbiera" ogłoszenia z innych końskich stron i umieści je w bazie...

Ogólnie ma to działać na zasadzie:

1) uruchomienie skryptu raz dziennie przy pierwszym wywolaniu bazy
2) polaczenie sie ze stronami z listy, otwarcie strony (fopen) i sprawdzenie czy pojawily sie nowe ogłoszenia
3) jeśli tak, pobranie pól ogłoszenia według kryterium dla każdej strony, np . (imie, nazwisko, miejscowosc, kontakt, tytul, tresc, zdjecie )
4) umieszczenie danych w bazie mysql wraz z flaga aktywne
5) wyslanie na podany w ogloszeniu email zapytania, czy uzytkownik wyraza zgode na umieszczenie ogloszenia w Jeździeckim Centrum Informacyjnym
6) po kliknieciu w link flaga zmieniana jest na 1
7) nowe ogloszenie jest wyswietlane w bazie...

Tylko za bardzo nie wiem jak zrealizowac punkty 2 i 3, tak zeby otrzymac proste zmienne, które będę mógł umieścić w bazie


Pozdrawiam i proszę o pomoc
Patryk
rzseattle
Polaczenie ze wszystkimi stronami to maly pryszcz. Gorzej ze na kazda z nich ma inny format danych. Bedziesz musial uzywac wyrazen regularnych do wyciagania danych. W przypadku gdy skanujesz jedna strone to nawet luz - gdy piec to rzeznia ale nigdy w zyciu nie uda ci sie wyciagac wynikow z setek stron. Jesli by nikt nigdy nie zmienial ich formy to moze wreszcie napisalbys parsery do kazdej strony ale tak nie jest i napewno nie bedzie. Po jakims czasie poprostu twoja witryna przestala by dzialac.

Jesli jednak upierasz sie przy swoim to przekazuje skrypt ktory kiedys umiescil w moim temacie castor

[php:1:4c66245d58]<?php
$adres="http://www.wp.pl/r/tg";
$host="www.wp.pl";
$jestLocation=true;
while($jestLocation){
$content="";
$port="80";

$fp = fsockopen($host, $port, &$ErrNo, &$ErrStr);
if (!$fp) {
die ("$ErrNo $ErrStr");
}else{

fputs($fp, "GET {$adres} HTTP/1.1rn");
fputs($fp, "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,*/*rn");
fputs($fp, "Accept-Language: dern");
fputs($fp, "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)rn");
fputs($fp, "Connection: closern");
fputs($fp, "Host: {$host}rn");
fputs($fp, "rn");

while ($buf=fread($fp,1024)) {
$content.=$buf;
}
}

fclose($fp);
if(eregi("Location: (.*)Connection:(.*)",$content,$rgs)){
$adres=chop($rgs[1]);
unset($rgs);
eregi("http://(.*)/",$adres,$rgs);
$host=$rgs[1];
continue;
}else if(eregi("<!-- srodkowa kolumna -->(.*)<!-- srodkowa kolumna koniec -->", $content, $rgs)){
$content=$rgs[0];
$jestLocation=false;
}
}

echo "$content";
?>[/php:1:4c66245d58]

kiedys ten skrypt byl dla mnie czarna magia (a ch te wspomnienia). Niewiem czy dalej dziala bo od tego czasu wp zdazylo przejsc na XHTML i nie jestem pewien czy nie pozmieniali znacznikow srodkowej kolumny, potraktuj go wiec jako pomoc naukowa i przyklad tego ze te skrypty (konkretnej wyrazenia) po jakim czasie sie deaktualizuja.
xPatryk
Hmmm...

Skrypt całkiem całkiem, tylko chodzi mi o to, aby pobierać treści powtarzające się - np.


Kod
Imię: Jan  Nazwisko: Kowalski <br>

Imię: Tomasz Nazwisko: Jakiś <br>

...


Tak, aby skrypt zatrzymywał się po wystąpieniu jakiegoś słowa, i wyświetlał każde pole osobno ...
np pobiera ciąg od Imię: do Nazwisko i zapisuje je jako zmienną imię, wtedy mogę wpisać je do bazy, pozniej pobiera dane od Nazwisko: do znacznika <br> i zapisuje je jako zmienna $nazwisko winksmiley.jpg i dopiero przechodzi do nastepnej lini, gdzie sytuacja się powtarza :|

Tylko jak by to zrobic sad.gif :?: :!: :idea:
zalew
Cytat
Jesli by nikt nigdy nie zmienial ich formy to moze wreszcie napisalbys parsery do kazdej strony ale tak nie jest i napewno nie bedzie

on ma na mysli chyba, ze bedzie te ogloszenia pobieral legalnie a nie, ze qnportal to zlodzieje i beda ssali tresc na ktora wlasciciele innych stron sobie zapracowali.. tak wiec ten problem chyba odpada...
xPatryk
Cytat
qnportal to zlodzieje i beda ssali tresc na ktora wlasciciele innych stron sobie zapracowali


uuuu...

Złodziejami to raczej nie jesteśmy i ssać cudzej treści, na którą sobie ktoś zapracował nie zamierzamy...

Myślałęm, że cel opisałem w miare dokładnie.. Ponadto autor strony nie posiada praw autorskich do ogłoszeń. Prawa takowe posiada autor ogłoszenia, więc skrypt będzie wysyłał maila z zapytaniem o zgode umieszczenia :| więc złodziejami raczej nie jesteśmy tongue.gifP
zalew
spoko, nie oskarzam, ale zapotrzebowanie na takie skrypty mnie co raz bardziej przeraza :)
xPatryk
Mogę Cię zapewnić, że jego celem nie będzie kradnięcie tekstów z różnych stron - do tego wystarczyłby mi powyzszy skrypt, albo CTRL + C i CTRL + V smile.gif


Pozdrawiam
Patryk
rzseattle
Cytat
Ponadto autor strony nie posiada praw autorskich do ogłoszeń. Prawa takowe posiada autor ogłoszenia, więc skrypt będzie wysyłał maila z zapytaniem o zgode umieszczenia  więc złodziejami raczej nie jesteśmy P


Jak bys probowal pobierac ogloszenia z mojej strony to:
1) Uznal to za zlodziejstwo i szachrajstwo
2) Uniemozliwil bym twojemu skryptowi pobieranie danych z mojej strony
3) Wyslal bym wszystkim zaprzyjaznionym servisa maila z powiadomieniem ze stosujesz takie praktyki i jak je ukrocic

Dlaczego?
1) Wykorzystujesz popularnosc mojej strony aby osiagnac DLA SIEBIE okreslone kozysci
2) Do tego odciagasz uzytkownikow od mojej stony wysylajac im darmowa reklame swojej strony
3) Nie zgodzilem sie na twoje praktyki a ty bezczelnie jedziesz wyrazeniem po mojej stronce i wyciagasz dane ktore byly przeznaczone dla ludzi chcacych poszukac jakiejs oferty a nie dla ciebie


Ta wypowiedz traci waznosc w momecie gdy autor servisu zgadza sie na takie praktyki (bardzo watpie czy sie ktokolwiek zgodzi). Ale wtedy zainteresujcie sie zdalnym wywolywaniem uslug np SOAP.
xPatryk
buuu...
Dlaczego ludzie oskarżają nas o jakieś dziwne interesy sad.gif cóż za przykre insynuacje sad.gif((

jak już wspomniałem, są to zaprzyjaźnione, zazwyczaj małe stronki, których autorzy wyrażają zgodę

Cytat
ssać cudzej treści, na którą sobie ktoś zapracował nie zamierzamy..


co do korzysci, moja działalność nie przynosi mi żadnych korzyści, robię to z poczucia obowiązku tongue.gif (zresztą poczytaj FAQ, o autorze, to się wszystkiego dowiesz tongue.gifP)
rzseattle
No dobra. Pzekonales mnie smile.gif .

Do wyciagania odpowiednich danych potrzebna ci jest wiedza ktora znajdzisz tutaj + skrypt ktory zacytowalem. Zanim zabierzesz sie za kodowanie spytaj autora strony czy nie moglby udostepnic specjalnie dla ciebie pliku ktory udostepnia dane w okreslonym formacie. Jesli wszyscy sie zgodza to zaoszczedzisz sobie duzo pracy. Ponadto takie dane mogly by byc udostepniane w formie dokumentu XML co ulatwi ci sprawe o tyle ze mozesz wykozystac gotowe parsery XML do ich odczytu.
jureusz
Autorzy sie zgadzaja bo nie placa za ilosc wypalonych danych na swoich kontach ... To sie z pewnoscia zmieni ... kwestia czasu. Poki co wszyscy sa przyzwyczajeni, ze za nic nie trzeba placic ...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.