Προς το περιεχόμενο

...ΝΑ ΔΙΑΒΑΖΕΙ ΜΙΑ ΣΕΛΙΔΑ ΣΑΝ ΤΧΤ


trad

Προτεινόμενες αναρτήσεις

Δημοσ.

ΑΥΤΟ ΠΟΥ ΘΕΛΩ ΝΑ ΚΑΝΩ ΕΙΝΑΙ ΕΝΑ ΠΡΟΓΡΑΜΜΑΤΑΚΙ ΠΟΥ ΑΝΟΙΓΕΙ ΜΙΑ ΣΕΛΙΔΑ ΚΑΙ ΝΑ ΤΗ ΔΙΑΒΑΖΕΙ ΨΑΧΝΟΝΤΑΣ ΣΤΟ ΤΕΧΤ ΤΗΣ ΓΙΑ ΚΑΤΙ.

ΜΙΑ ΠΡΩΤΗ ΣΚΕΨΗ ΜΟΥ ΗΤΑΝ ΝΑ ΤΗ ΣΩΖΕΙ ΣΕ ΤΧΤ ΚΑΙ ΜΕΤΑ ΝΑ ΤΗ ΔΙΑΒΑΖΕΙ. ΕΛΑ ΟΜΩΣ ΠΟΥ ΘΕΛΩ ΝΑ ΨΑΞΩ ΚΑΜΙΑ 30ΑΡΙΑ ΣΕΛΙΔΕΣ. ΤΙ ΝΑ ΚΑΝΩ? ΝΑ ΒΑΛΩ ΤΟΝ ΙΕ ΝΑ ΑΝΟΙΓΕΙ ΤΗ ΜΙΑ ΣΕΛΙΔΑ ΠΙΣΩ ΑΠΟ ΤΗΝ ΑΛΛΗ ΚΑΙ ΝΑ ΣΩΖΩ? ΠΑΝΤΩΣ, ΑΚΟΜΑ ΚΙ Σ' ΑΥΤΟ ΝΑ ΚΑΤΑΛΗΞΩ, ΔΕΝ ΓΝΩΡΙΖΩ ΠΩΣ ΘΑ ΤΟ ΦΤΙΑΞΩ.

ΚΑΜΙΑ ΙΔΕΑ? ΥΠΑΡΧΕΙ ΚΑΠΟΙΟΣ ΠΟΥ ΝΑ ΕΧΕΙ ΚΑΝΕΙ ΚΑΤΙ ΑΝΑΛΟΓΟ?

Δημοσ.

Κατ' αρχάς θα μπορούσες να μην γράφεις με κεφαλαία. (εκτός απο κουραστικό, σημαίνει οτι φωνάζεις και δεν είναι τόσο ευγενικό αυτό).

 

Τώρα όσον το πρόβλημά σου, για να το κάνεις προγραμματιστικά, είναι σχετικά σύνθετο (και άρα δύσκολο, ειδικά άμα δεν έχεις εμπειρία).

 

Από ότι καταλαβαίνω, δεν ξέρεις προγραμματισμό, έτσι δεν είναι ?

Αν έχεις ιδέα απο Delphi, πάντως μπορώ να σου δώσω δυο-τρεις ρουτίνες που αν τις συνδιάσεις, θα κάνουν αυτό που θές, αν και δεν είναι τοσο απλό όσο ακούγετε....

Δημοσ.

Καταρχίν, δεν φωνάζω απλώς έτσι έτυχε με τα κεφαλαία, Δεύτερον ξέρω php, C και C++, λιγάκι java και γι' αυτό ρωτάω. Αν δεν ήξερα τίποτα απ' ολα αυτά δεν θα ρωτούσα τίποτα, θα πήγαινα για ύπνο :). Περιμένω συνέχεια

Δημοσ.

Έχεις δουλέψει καθόλου Visual Programming (C++ Builder, Delphi) έχω κώδικα που κάνει την δουλεία. Δοκίμασε να χρησιμοποιήσείς τις ρουτίνες του WinInet, που κάνουν την δουλεία και είναι πολύ πιο απλές απο τα Socket (είναι ένα επίπεδο επάνω). Παρακάτω παραθέτο κώδικα σε Delphi, που επιστρέφει μία σελίδα σε txt (String). Χωρίς τις φωτογραφίες....

 

Αν έχεις κάποια απορία μπορείς να με ρωτήσεις είτε απο έδω είτε με κάνα εμαιλ.

 

 

>
function ReadUrl(const url : String) : String;
const
 AgentName = 'Microsoft Internet Explorer';
var
 hINet,
 hFile : HINTERNET;
 tmp  : String;
 Readed : DWORD;
 AnsiURL : AnsiString;
 Buffer : Array[0..1023] of Char;
begin
 hINet := InternetOpen(AgentName, INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);
 try
   if hINet = nil then
     Raise Exception.Create('Fail to Execute Internet Open');

   AnsiURL := url;
   hFile := InternetOpenURL(hINet, PAnsiChar(AnsiURL), nil, 0, 0, 0);
   try
     if hFile = nil then
       Raise Exception.Create('Fail to Execute Internet Open URL:' + URL);
     Result := '';
     repeat
       InternetReadFile(hFile, @Buffer[0], 1024, Readed);
       SetString(tmp, Buffer, Readed);
       Result := result + tmp;
     until Readed < 1024;
   finally
     InternetCloseHandle(hFile);
   end;
 finally
   InternetCloseHandle(hINet);
 end;
end;

 

Βέβαια για να τα χρησιμοποιείσεις αυτά θα πρέπει να κάνεις κάποιο include και άν δεν χρησιμοποιήσης C++ Builder να αλλάξεις το TStringList με απλό string.

Δημοσ.

Χμμμ ειπες την μαγική λέξη!!! :D :D

Δοκιμασε αυτο για αρχη:

>
<?PHP
 $fd=fopen("http://www.insomnia.gr/","r");
 while ($line=fgets($fd,1000))
 {
    $alltext.=$line;
 }
 fclose ($fd);
 echo $alltext;
?> 

 

ΜΕτά κάνεις ένα

 

>strstr($alltext,'το στρινγκ που ψαχνεις')

 

και τελειωσες!

 

Δες εδω για παραπανω:


http://php.gr/manual/en/function.fopen.php
http://php.gr/manual/en/function.preg-match.php

Δημοσ.

πολύ ωραία μέχρι εδώ mkst. thanks! Το μόνο που μου λείπει ακόμα (εκτός απο 600.000 ευρώ και μια φοβερή γυναικάρα) είναι το όνομα μιας function που αφού βρει τη λέξη που ψάχνουμε να διαβάσει και να αποθηκεύσει την αμέσως επόμενη. Μόνο ένα (ή περισσότερα) ονόματα functions δόσε μου και μ' έκανες άνθρωπο...:):):D

Δημοσ.

Den prepei na yparxei kati tetoio etoimo....des kai sto site pou sou edwsa, alla mallon prepei na to ftiakseis esi kapws etsi:

Kane:

1) elegxo me to strstr() se ka8e $line

2) an breis match kaneis split() to $line sta spaces. Tote an to $array einai match, to $array[i+1] einai h leksi pou psaxneis.

 

Sigoura tha iparxei kai kapoios grigoroteros tropos, skepsou to ligo.....

Δημοσ.

Ρε συ mkst τρέχω το σκριπτάκι απο command line (php c:\.....\x.php) και παίρνω τα εξής μηνύματα:

<br />

<b>Warning</b>: php_network_getaddresses: gethostbyname failed in <b>c:\php\dok

imi\x.php3</b> on line <b>2</b><br />

<br />

<b>Warning</b>: fopen("http://www.insomnia.gr/", "r") - No error in <b>c:\php\d

okimi\x.php3</b> on line <b>2</b><br />

<br />

<b>Warning</b>: fgets(): supplied argument is not a valid File-Handle resource

in <b>c:\php\dokimi\x.php3</b> on line <b>3</b><br />

<br />

<b>Warning</b>: fclose(): supplied argument is not a valid File-Handle resource

in <b>c:\php\dokimi\x.php3</b> on line <b>9</b><br />

<br />

<b>Warning</b>: open(c:\temp\sess_78bf851e7671012ee3127d48ab5a743b, O_RDWR) fai

led: No such file or directory (2) in <b>Unknown</b> on line <b>0</b><br />

<br />

<b>Warning</b>: Failed to write session data (files). Please verify that the cu

rrent setting of session.save_path is correct (c:\temp) in <b>Unknown</b> on lin

e <b>0</b><br />

Το C:\temp υπάρχει και τα session είναι ανοιχτά στο php.ini. Επίσης έχω 1 το fopen() στο php.ini!!!

Το τρέχω βέβαια μέσα απο δίκτυο (απο υπολογιστή σε domain) που κάποιες λειτουργίες είναι κλειδωμένες. Βλέπεις κανα προγραμματιστικό τερτίπι στα warnings ή να δοκιμάσω και απο αλλού?

Δημοσ.

exeis firewall?

dokimase na baleis ip anti gia url...

px. bale http://66.218.71.198/ anti to insomnia 'h ena allo ip pou sou bgazei omws selida ston exlporer

 

Episis, an to problima exei na kanei me to dns mono, isws iparxei lisi. Iparxei auto to arxeio (C:\WINNT\system32\drivers\etc\hosts) pou orizeis ip kai domains. Isws aksizei ton kopo na to tsekareis....pes telika ti kataferes...

Δημοσ.

To δοκίμασα απο το σπίτι και δούλεψε μια χαρά. mkst thanks a lot! Τελικά, πάντως, δεν έψαξα τα string αφού αυτό που έρχεται γραμμή-γραμμή είναι ο κώδικας html της σελίδας (όπως θα γνωρίζεις) και είναι λίγο δύσκολο να κάτσω να τον καθαρίσω. Πιο εύκολο είναι να στέλνω έξοδο σε ένα αρχείο html και να το σώσω έτσι. Εντομεταξί έχω εντοπίσει τις γραμμές (1η, 17η-25η, ...) που έχουν την πληροφορία που θέλω και τραβάω μόνο αυτές, με μια μικρή παραλαγή στον κώδικα που μου έδοσες. Μετά με κανα-δύο echo "html code" διορθώνω την html (κλείνω έναν πίνακα, για παράδειγμα, του οποίου την αρχή <table> την παίρνω αλλά δεν παίρνω το </table> γιατί είναι πολύ χαμηλότερα στη σελίδα, σε γραμμή που δεν χρειάζομαι) και τελικά βγαίνει ένα πολύ ωραίο αποτέλεσμα σε html με την κατάταξη επιλεγμένων απο εμένα sites όπως αυτή είναι στο Korinthorama. mkst ευχαριστώ πολύ για τη βοήθεια.

 

ΥΓ. Αρχικά προσπάθησα να το κάνω στο alexa (μετρήσεις του http://www.alexa.com) όμως είναι το μόνο site το οποίο αρνήθηκε να μου δόσει τον κώδικα της σελίδας, παρά έβγαζε κάποια πολύ ενδιαφέροντα-παράξενα μηνύματα που θα τα κάνω post μόλις πάω σπίτι να τα δείτε και να το συζητήσουμε λιγάκι

Δημοσ.
Τελικά, πάντως, δεν έψαξα τα string αφού αυτό που έρχεται γραμμή-γραμμή είναι ο κώδικας html της σελίδας (όπως θα γνωρίζεις) και είναι λίγο δύσκολο να κάτσω να τον καθαρίσω.......

 

Afou sou douleuei eisai kirile... :wink: :D , alla sto lew just in case...iparxei h strip_tags() h opoia afairei ta html tags. Des edw gia info: http://php.gr/manual/en/function.strip-tags.php

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...