crawl απο pblogs

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
fAzer
Δημοσιεύσεις: 361
Εγγραφή: 15 Νοέμ 2009 16:29

crawl απο pblogs

Δημοσίευση από fAzer » 12 Νοέμ 2011 03:05

Γειά σας.. προσπαθώ να "διαβάσω" τα external links απο pblogs και σταματαει να τρεχει το script και βγαζει σφαλμα.. μου εχει σπασει τα νευρα! γιατι γινεται αυτο; τι καναν; πως το καναν; ειναι καποιο meta tag ?
εν πασει περιπτωσει εαν θελω να βαλω το script να τρεχει, εστω με καποιο cron job, πως θα μπορουσα να ελεγξω ποτε σταματαει... για να ξανα ξεκινησει;

α και κατι αλλο που ειχα προσπαθησει παλιοτερα και δεν εβγαλα ακρη, σχετικα με το preg_match..
θελω urls που να τελειωνουν ειτε σε .gr , ειτε σε .gr/ .. δε μπορεσα να βρω πως γινεται με το " | " μεσα στο preg_match και τα εβαλα ξεχωριστα:

Κώδικας: Επιλογή όλων

preg_match("/^(http):\/\/([a-z0-9]([a-z0-9_-]*[a-z0-9])?\.)*gr\/$/", strtolower($taurl))

Κώδικας: Επιλογή όλων

preg_match("/^(http):\/\/([a-z0-9]([a-z0-9_-]*[a-z0-9])?\.)*gr$/", strtolower($taurl)))
μια βοηθεια, για το πως θα γινοταν αυτο΄΄

Ευχαριστω..

gvre
Δημοσιεύσεις: 992
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

crawl απο pblogs

Δημοσίευση από gvre » 12 Νοέμ 2011 09:44

fAzer έγραψε:Γειά σας.. προσπαθώ να "διαβάσω" τα external links απο pblogs και σταματαει να τρεχει το script και βγαζει σφαλμα.. μου εχει σπασει τα νευρα! γιατι γινεται αυτο; τι καναν; πως το καναν; ειναι καποιο meta tag ?
εν πασει περιπτωσει εαν θελω να βαλω το script να τρεχει, εστω με καποιο cron job, πως θα μπορουσα να ελεγξω ποτε σταματαει... για να ξανα ξεκινησει;
Στείλε τον κώδικα που χρησιμοποιείς και το error που σου βγάζει.

fAzer έγραψε: α και κατι αλλο που ειχα προσπαθησει παλιοτερα και δεν εβγαλα ακρη, σχετικα με το preg_match..
θελω urls που να τελειωνουν ειτε σε .gr , ειτε σε .gr/ .. δε μπορεσα να βρω πως γινεται με το " | " μεσα στο preg_match και τα εβαλα ξεχωριστα:

Κώδικας: Επιλογή όλων

preg_match("/^(http):\/\/([a-z0-9]([a-z0-9_-]*[a-z0-9])?\.)*gr\/$/", strtolower($taurl))

Κώδικας: Επιλογή όλων

preg_match("/^(http):\/\/([a-z0-9]([a-z0-9_-]*[a-z0-9])?\.)*gr$/", strtolower($taurl)))
μια βοηθεια, για το πως θα γινοταν αυτο
Δε χρειάζεται να τα βάλεις χωριστά. Αρκεί να βάλεις ένα ? μετά το /.

ps. Καλό είναι να χρησιμοποιείς κάποιο άλλο regex delimiter όταν κάνεις match urls για να μη χρειάζεται να κάνεις escape τα /.
πχ το παραπάνω θα μπορούσες να το γράψεις κάπως έτσι

Κώδικας: Επιλογή όλων

preg_match("#^(http)://([a-z0-9]([a-z0-9_-]*[a-z0-9])?\.)*gr/$#i", $taurl);
ή ακόμα καλύτερα έτσι

Κώδικας: Επιλογή όλων

preg_match('#href=[\'"](http://.+?\.gr/?)[\'"]#i', $taurl, $matches);
ps2. Για να πάρεις τα urls που κάνεις match, χρειάζεται να περάσεις και 3ο όρισμα στην preg_match.

Άβαταρ μέλους
fAzer
Δημοσιεύσεις: 361
Εγγραφή: 15 Νοέμ 2009 16:29

crawl απο pblogs

Δημοσίευση από fAzer » 12 Νοέμ 2011 12:37

Πρόβλημα φόρτωσης σελίδας
Έγινε διακοπή της σύνδεσης με τη σελίδα
Το έγγραφο δεν περιέχει δεδομένα.
Κλπ κλπ..
Αυτό μου βγάζει..
Δεν υπαρχει καποιο error απο τη μερια μου..
Απλα στα pblogs (τουλαχιστον) παρατηρησα οτι συμβαινει αυτο..

Δηλαδη οταν βαζεις # αντι για / δε χρειάζεται escape? το i στο τελος τι κανει;
Απλα εχω το simple_html_dom.php , δε νομιζω οτι χρειαζεται preg στο href αφου ηδη παιρνω μονο το url απο τα href..
Ενταξει δε χρειαζεται το 3ο ορισμα τα περναω σε βαση δεδομενων στο τελος..

Αρα:

Κώδικας: Επιλογή όλων

preg_match('#(http://.+?\.gr/?)#i', $taurl);
Δηλαδη το /? ηταν αυτο που δε μπορουσα να βρω ? και δοκιμαζα κατι χαζα ( / | ) τετοιο στυλ.. :P

εαν θελω να βαλω το script να τρεχει, εστω με καποιο cron job, πως θα μπορουσα να ελεγξω ποτε σταματαει... για να ξανα ξεκινησει;

gvre
Δημοσιεύσεις: 992
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

crawl απο pblogs

Δημοσίευση από gvre » 12 Νοέμ 2011 13:56

fAzer έγραψε:Πρόβλημα φόρτωσης σελίδας
Έγινε διακοπή της σύνδεσης με τη σελίδα
Το έγγραφο δεν περιέχει δεδομένα.
Κλπ κλπ..
Αυτό μου βγάζει..
Δεν υπαρχει καποιο error απο τη μερια μου..
Απλα στα pblogs (τουλαχιστον) παρατηρησα οτι συμβαινει αυτο..
Δεν ξέρω πως ακριβώς τραβάς τη σελίδα για να μπορώ να σου απαντήσω με σιγουριά. Έχεις κάνει set το user agent header; Αν όχι, κάνε το και δοκίμασε ξανά. Αν δεν παίξει, στείλε τον κώδικα που τραβάει τη σελίδα.
fAzer έγραψε: Δηλαδη οταν βαζεις # αντι για / δε χρειάζεται escape? το i στο τελος τι κανει;
Ναι.
Το i αγνοεί πεζά/κεφαλαία (case insensitive).
fAzer έγραψε: Απλα εχω το simple_html_dom.php , δε νομιζω οτι χρειαζεται preg στο href αφου ηδη παιρνω μονο το url απο τα href..
Ενταξει δε χρειαζεται το 3ο ορισμα τα περναω σε βαση δεδομενων στο τελος..

Αρα:

Κώδικας: Επιλογή όλων

preg_match('#(http://.+?\.gr/?)#i', $taurl);
Δηλαδη το /? ηταν αυτο που δε μπορουσα να βρω ? και δοκιμαζα κατι χαζα ( / | ) τετοιο στυλ.. :P
Ναι
fAzer έγραψε: εαν θελω να βαλω το script να τρεχει, εστω με καποιο cron job, πως θα μπορουσα να ελεγξω ποτε σταματαει... για να ξανα ξεκινησει;
Τι ακριβώς θέλεις να κάνεις;

Άβαταρ μέλους
fAzer
Δημοσιεύσεις: 361
Εγγραφή: 15 Νοέμ 2009 16:29

crawl απο pblogs

Δημοσίευση από fAzer » 12 Νοέμ 2011 15:40

Ωραια ευχαριστω..

Μπαινω σε sites .gr και διαβαζω ολα τα external links. Με τα πολλα, οταν μπαινω σε pblogs σταματαει το php script !! Κοβεται. Σπαει. Πως το λενε.. και πρεπει να το ξανα ξεκινησω. Μονο αυτο, ολα τα αλλα, οτι χρειαζεται τα εχω φτιαξει. Τι εχουν κανει στα pblogs?? Τι λυση υπαρχει; Το να βαλω cron job καθε 1 λεπτο ειναι μια λυση αλλα αν το script δεν κοβεται για 30 λεπτα συνολικα (δηλαδη συνεχιζει 30 λεπτα το crawl και μετα συνανταει pblogs και σταματαει), στο 30ο λεπτο θα τρεχει 30 φορες το script και το αποτελεσμα θα ειναι το ιδιο για μενα, απλα θα εχω φαει bandwidth απο sites που εχουν περιορισμενο.
Αν βαλω cron job ανα 30 λεπτα, τοτε οταν το script κοβεται στο 1ο λεπτο (δηλαδη συναντησει αμεσως pblogs), θα πρεπει να περασουν τζαμπα 29 λεπτα!
Οποτε.. Πως γινεται να τσεκαρω ποτε σταματαει να τρεχει ενα php script? να εχω cron job καθε 1 λεπτο αλλα στην αρχη να τσεκαρει εαν το script τρεχει ηδη!
Υπαρχει τρόπος;

gvre
Δημοσιεύσεις: 992
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

crawl απο pblogs

Δημοσίευση από gvre » 12 Νοέμ 2011 17:00

Δοκίμασε το παρακάτω και πες αν δουλεύει

Κώδικας: Επιλογή όλων

function GetPageContent($url)
{
        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.94 Safari/535.1");
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        $out = curl_exec($ch);
        curl_close($ch);

        return $out;
}

$url = "http&#58;//XXX.pblogs.gr/"; // <------- ΑΛΛΑΞΕ ΤΟ ΜΕ ΤΟ ΣΩΣΤΟ URL

echo GetPageContent&#40;$url&#41;;
Για να ελέγξεις αν ένα script τρέχει ήδη πρέπει να χρησιμοποιήσεις κάποιο lock file[0] ή την pgrep (αν είσαι σε περιβάλλον linux/unix).

[0] Απλή εκδοχή: Όταν ξεκινάει το script, ελέγχεις αν υπάρχει το lock file. Αν ναι, σημαίνει ότι τρέχει ήδη κάποιο script οπότε κάνεις ένα exit αλλιώς το δημιουργείς, κάνεις τη δουλειά σου και το διαγράφεις όταν τελειώσει η εκτέλεση.

Άβαταρ μέλους
fAzer
Δημοσιεύσεις: 361
Εγγραφή: 15 Νοέμ 2009 16:29

crawl απο pblogs

Δημοσίευση από fAzer » 12 Νοέμ 2011 17:28

Ευχαριστώ!

Δε δουλευει το curl..

Δηλαδη εαν κανω:

Κώδικας: Επιλογή όλων

$fp = fopen&#40;'crawl.php', 'r'&#41; or die &#40;'ERROR&#58; Cannot open file'&#41;;
flock&#40;$fp, LOCK_EX&#41; or die &#40;'ERROR&#58; Cannot lock file'&#41;;
.............
script
.............
flock&#40;$fp, LOCK_UN&#41; or die &#40;'ERROR&#58; Cannot unlock file'&#41;;
fclose&#40;$fp&#41;;
αυτο θα λυσει το προβλημα;
οσο δουλευει το crawl.php δε θα μπορει να ξανα ανοιξει, εως οτου ολοκληρωθει η διαδικασια και γινει UNlock.. σωστα;

Άβαταρ μέλους
fAzer
Δημοσιεύσεις: 361
Εγγραφή: 15 Νοέμ 2009 16:29

crawl απο pblogs

Δημοσίευση από fAzer » 12 Νοέμ 2011 17:31

αλλα κατσε.. γινεται να το χρησιμοποιησω αυτο στο ιδιο αρχειο ; μαλλον μεσω αλλου script πρεπει να ανοιγω και να κλειδωνω το crawl.php .. σωστα;

gvre
Δημοσιεύσεις: 992
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

crawl απο pblogs

Δημοσίευση από gvre » 12 Νοέμ 2011 17:45

fAzer έγραψε:Ευχαριστώ!

Δε δουλευει το curl..
Τι εννοείς δε δουλεύει; Δεν τραβάει τη σελίδα, δεν έχεις το extension, τι ακριβώς; Το "δε δουλεύει το curl" δε λέει και πολλά πράγματα. Γιατί δεν κάνεις post τον κώδικα που τραβάει τη σελίδα να δούμε μήπως είναι κάτι άλλο;
fAzer έγραψε: Δηλαδη εαν κανω:

Κώδικας: Επιλογή όλων

$fp = fopen&#40;'crawl.php', 'r'&#41; or die &#40;'ERROR&#58; Cannot open file'&#41;;
flock&#40;$fp, LOCK_EX&#41; or die &#40;'ERROR&#58; Cannot lock file'&#41;;
.............
script
.............
flock&#40;$fp, LOCK_UN&#41; or die &#40;'ERROR&#58; Cannot unlock file'&#41;;
fclose&#40;$fp&#41;;
αυτο θα λυσει το προβλημα;
οσο δουλευει το crawl.php δε θα μπορει να ξανα ανοιξει, εως οτου ολοκληρωθει η διαδικασια και γινει UNlock.. σωστα;
Δε χρειάζεται fopen κλπ. Με touch και unlink κάνεις δουλειά. πχ

Κώδικας: Επιλογή όλων

touch&#40;"/tmp/crawler.lock"&#41;;
και

Κώδικας: Επιλογή όλων

unlink&#40;"/tmp/crawler.lock"&#41;;

Άβαταρ μέλους
fAzer
Δημοσιεύσεις: 361
Εγγραφή: 15 Νοέμ 2009 16:29

crawl απο pblogs

Δημοσίευση από fAzer » 13 Νοέμ 2011 13:05

Συγνωμη που δεν ηταν ξεκαθαρο, αλλα θεωρησα το οτι δεν αναφερω καποιο error αυτο σημαινει οτι απλα δεν φερνει καποιο αποτελεσμα..
Παντως χρησιμοποιω αλλους τροπους για crawl και δεν ειμαι υπερ του curl για την περιπτωση μου τουλαχιστον.. για μενα το simple_html_dom.php ειναι το καλυτερο, ισως επειδη δεν ξερω το curl και επειδη ειμαι ηδη 95% ευχαριστημενος με απο τον τροπο που χρησιμοποιω τωρα..
τελικα δεν ηταν ολα τα pblogs gr το προβλημα, αλλα απ'οτι κοιταξα αυτο γινοταν σε sites που ειχαν στο href κωδικα javascript..
Τελειωσα χθες, αποτελεσμα 25.000 περιπου top level .gr domains.. μεχρι pr9 ειδα γυρω στα 15 αλλα pr 10 κανενα.. :p
μου αρεσε το applestore.gr που δειχνει οτι και καλα ειναι pr9 :lol:

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης