Ανάκτηση Αποτελεσμάτων Google

Συζητήσεις για τις γλώσσες του dot Net και για του Visual Studio της Microsoft

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

Απάντηση
lakritidis
Δημοσιεύσεις: 401
Εγγραφή: 04 Αύγ 2005 14:35
Τοποθεσία: Katerini
Επικοινωνία:

Ανάκτηση Αποτελεσμάτων Google

Δημοσίευση από lakritidis » 27 Απρ 2006 21:47

Φτιαχνω ένα προγραμμα για ένα μεταπτυχιακό φιλαράκι σε vb.net. Αυτός θέλει να παίρνει τα πρώτα 20 αποτελέσματα από το google κάθε μέρα, στις 00:00 και στις 13:00. Τα αποτελεσματα θέλει να τα σώζει σε ανεξάρτητα text αρχεία (είναι άσχετος από databases). Οι δυό αναζητήσεις γίνονται με keywords

1. metabolic engineering
2. iran nuclear weapons

Χρησιμοποιώ ένα Internet Tranfer Control σε συνδυασμό με ένα timer για να φέρνω τις σελίδες από το google. Δυστυχώς όμως, αυτό που έρχεται από to google είναι όλος ο κώδικας HTML των σελίδων. Θα πρέπει λοιπόν να δημιουργήσω μία τεράστια string μεταβλητή και να τη φιλτράρω με βάση τον όρο "<a href=". Πολύ μανίκι όμως μου φαίνεται. Υπάρχει κάποιος πιο εύκολος τρόπος?

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Ανάκτηση Αποτελεσμάτων Google

Δημοσίευση από ThyClub » 28 Απρ 2006 00:44

Ναι, το google API

lakritidis
Δημοσιεύσεις: 401
Εγγραφή: 04 Αύγ 2005 14:35
Τοποθεσία: Katerini
Επικοινωνία:

Ανάκτηση Αποτελεσμάτων Google

Δημοσίευση από lakritidis » 02 Μάιος 2006 16:36

Τελικά το έφτιαξα με τον τρόπο μου. Το πρόγραμμα επικοινωνεί με το yahoo εκτελεί τις δύο αναζηήσεις δύο φορές την ημέρα και σώζει τα 20 πρώτα αποτελέσματα.
Στο google όμως, αντί να έρθει η ιστοσελίδα με τα αποτελέσματα, έρχεται μια σελίδα που λεει ότι απαγορεύεται η εκτέλεση αυτόματων queries. Άρα το Internet Transfer Control, φέρνει αυτό που πρέπει από το yahoo, αλλά όχι από το google.

Καμία πρόταση?

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Ανάκτηση Αποτελεσμάτων Google

Δημοσίευση από ThyClub » 02 Μάιος 2006 20:32

ThyClub έγραψε:Ναι, το google API
Αν πρόσεξες ανέφερα το Google API και όχι να κάνεις queries απευθείας στο Google. Αυτό απαγορεύεται απο το Google.

Με το Google API μπορείς να κάνεις αναζήτηση στην βάση του Google απο την σελίδα σου και θα έχεις και σχεδόν όλα τα καλούδια που αυτό συνεπάγεται :wink:

lakritidis
Δημοσιεύσεις: 401
Εγγραφή: 04 Αύγ 2005 14:35
Τοποθεσία: Katerini
Επικοινωνία:

Ανάκτηση Αποτελεσμάτων Google

Δημοσίευση από lakritidis » 26 Μάιος 2006 16:31

Το έφτιαξα τοπρόγραμμα και είναι ένας συνδυασμός του google API (για τα αποτελέσματα του Google) και του Internet Tansfer Control (για το Yahoo).

Όμως:
1. Τα αποτελέσματα που παίρνω απο το Google API έχουν διαφορετικό rank από αυτά που παίρνω όταν επισκέπτομαι τη σελίδα του Google. (Παίρνω τα αποτελέσματα από το resultElements.URL(index)).
2. Σε ορισμένες περιπτώσεις επικοινωνίας με το Yahoo, το Internet Transfer Control πεταέι System.Runtime.Interop.COMException. Αυτό γίνεται σε ISDN και PSTN συνδέσεις, στην ADSL δεν υπάρχει πρόβλημα. To exception το κάνω catch, όμως δε μπορώ να το παρακάμψω. Τι είναι αυτό; Οφείλεται στη σύνδεση; Ή μήπως σε ασυμβατότητα του control με το Component Object Model του .ΝΕΤ framework?

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27617
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

Ανάκτηση Αποτελεσμάτων Google

Δημοσίευση από cordis » 26 Μάιος 2006 17:04

για το 2 δες αν υπάρχει τρόπος τα βάλεις μεγαλήτερο timeout χρόνο.
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

lakritidis
Δημοσιεύσεις: 401
Εγγραφή: 04 Αύγ 2005 14:35
Τοποθεσία: Katerini
Επικοινωνία:

Ανάκτηση Αποτελεσμάτων Google

Δημοσίευση από lakritidis » 26 Μάιος 2006 21:59

Το δοκίμασα codis, και τώρα που το δοκιμάζω σε adsl βγάζει πάλι πρόβλημα. Αν γνωρίζεις πες μου σε παρακαλώ. Χρησιμοποιώ την openurl method του control. Θα γινόταν τίποτε αν χρησιμοποιούσα την execute method?

lakritidis
Δημοσιεύσεις: 401
Εγγραφή: 04 Αύγ 2005 14:35
Τοποθεσία: Katerini
Επικοινωνία:

Ανάκτηση Αποτελεσμάτων Google

Δημοσίευση από lakritidis » 27 Μάιος 2006 20:30

Λοιπόν έβγαλα το προβληματικό Internet Transfer Control και στη θέση του μπήκε ο ακόλουθος κώδικας που κάνει μια χαρά τη δουλεια.

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

myurl="http&#58;//search.yahoo.com/search?p=iran+nuclear+program&fr=FP-tab-web-t400&toggle=1&cop=&ei=UTF-8"
ComEstablished=False
reconnection_attempt = 0
While ComEstablished = False
    Try
       req = WebRequest.Create&#40;myurl&#41;
       resp = req.GetResponse&#40;&#41;
       sr = New StreamReader&#40;resp.GetResponseStream&#40;&#41;, Encoding.ASCII&#41;
       MYTEXTBOX.Text = sr.ReadToEnd&#40;&#41;
       resp.Close&#40;&#41;
       ComEstablished = True
    Catch ex As System.Net.WebException
        reconnection_attempt = reconnection_attempt + 1
        exceptionbar.Text = "Web Connection Exception Catched. Reconnecting... &#40;Attempt " & reconnection_attempt & "&#41;"
        exceptionbar.Refresh&#40;&#41;
        ComEstablished = False
     End Try
End While
Για να δουλέψει, πρεπει να γίνουν τα ακόλουθα statements στην κορυφή του προγράμματος

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

Imports System.Net
Imports System
Imports System.IO
Imports System.Text
Imports Microsoft.VisualBasic
και να δηλωθούν τα εξής

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

Public Shared sr As StreamReader
    Public Shared req As WebRequest
    Public Shared resp As WebResponse

lakritidis
Δημοσιεύσεις: 401
Εγγραφή: 04 Αύγ 2005 14:35
Τοποθεσία: Katerini
Επικοινωνία:

Ανάκτηση Αποτελεσμάτων Google

Δημοσίευση από lakritidis » 11 Αύγ 2006 00:12

Το πρόγραμμα ολοκληρώθηκε και ανέβηκε στον Skyblue server του Τμήματος Πληροφορικής του ΑΠΘ.

Δείτε αυτό το link

http://skyblue.csd.auth.gr/~lakritid

Απάντηση

Επιστροφή στο “dot Net και Visual Studio”

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

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