λογισμικό

Γνώση Υπολογιστών >> λογισμικό >  >> Facebook

Πώς αποθηκεύετε τα σχόλια στο Facebook σε μια βάση δεδομένων MySQL;

Η αποθήκευση των σχολίων στο Facebook σε μια βάση δεδομένων MySQL περιλαμβάνει διάφορα βήματα, όπως:

1. Κατανόηση του API Graph Facebook:

* Πρόσβαση σε δεδομένα: Το API Graph Facebook είναι ο πρωταρχικός τρόπος για τους προγραμματιστές να αλληλεπιδρούν με τα δεδομένα του. Θα χρειαστεί να το χρησιμοποιήσετε για να ανακτήσετε σχόλια από δημοσιεύσεις στο Facebook.

* Ρύθμιση εφαρμογών: Πρέπει να δημιουργήσετε μια εφαρμογή στο Facebook μέσω της πλατφόρμας Facebook για προγραμματιστές ([https://developers.facebook.com/]

* Δικαιώματα: Η εφαρμογή σας χρειάζεται τα κατάλληλα δικαιώματα για την πρόσβαση σε σχόλια. Το `read_stream` (καταργημένο, αλλά μπορεί να χρειαστεί για τα παλαιότερα API) ή το` public_profile 'σε συνδυασμό με χαρακτηριστικά που απαιτούν αναθεώρηση όπως το `pages_read_engagement` και ενδεχομένως` pages_manage_posts` είναι κρίσιμα ανάλογα με τις αναρτήσεις/σχόλια που στοχεύετε. Ελέγξτε προσεκτικά τις οδηγίες για την άδεια του Facebook. Η πρόσβαση στα δεδομένα χρήστη είναι όλο και περισσότερο περιορισμένη.

* ΠΡΟΣΦΟΡΑ Πρόσβαση: Θα λάβετε ένα διακριτικό πρόσβασης μετά την εξουσιοδότηση της εφαρμογής σας. Αυτό το διακριτικό ενεργεί ως το κλειδί σας για να αποκτήσετε πρόσβαση στο API γραφήματος. Υπάρχουν διαφορετικοί τύποι μαρκών (χρήστης, εφαρμογή, σελίδα). Οι μάρκες χρήστη είναι για ενέργειες για λογαριασμό ενός χρήστη. Οι μάρκες εφαρμογών αφορούν ενέργειες που σχετίζονται με την ίδια την εφαρμογή. Οι μάρκες σελίδας είναι για τη διαχείριση μιας σελίδας στο Facebook. Επιλέξτε το ένα κατάλληλο για την περίπτωση χρήσης σας.

2. Ρύθμιση της βάσης δεδομένων MySQL:

* Δημιουργία βάσης δεδομένων: Δημιουργήστε μια βάση δεδομένων στον διακομιστή MySQL για να αποθηκεύσετε τα σχόλια (π.χ. `facebook_comments`).

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

`` sql

Δημιουργία σχολίων πίνακα (

comment_id varchar (255) Πρωτογενές κλειδί, - Το μοναδικό αναγνωριστικό του Facebook για το σχόλιο

post_id varchar (255), - Το μοναδικό αναγνωριστικό του Facebook για την ανάρτηση

USER_ID VARCHAR (255), - Το μοναδικό αναγνωριστικό του Facebook για τον σχολιαστή

user_name varchar (255), - Όνομα του σχολιαστή

κείμενο μηνύματος, - το κείμενο σχολίων

Δημιουργήθηκε datetime, - χρονική σήμανση όταν δημιουργήθηκε το σχόλιο

Likes int Default 0, - αριθμός συμπαθειών (αν το αποθηκεύετε αυτό)

Απαντήσεις int προεπιλογή 0, - αριθμός απαντήσεων (αν το αποθηκεύετε αυτό)

Το ξένο κλειδί (post_id) αναφέρει τις αναρτήσεις (post_id) στο Delete Cascade, - Προαιρετικό:Σύνδεσμος σε έναν πίνακα "Δημοσιεύσεις"

Το ξένο κλειδί (user_id) αναφέρει τους χρήστες (user_id) σε διαγραφή set null - προαιρετικό:σύνδεσμος σε έναν πίνακα "χρήστες"

)

Δημιουργία αναρτήσεων πίνακα (

POST_ID VARCHAR (255) Πρωτογενές κλειδί, - Το μοναδικό αναγνωριστικό του Facebook για την ανάρτηση

κείμενο μηνύματος, - το κείμενο ταχυδρομείου

Δημιουργήθηκε datetime, - χρονική σήμανση όταν δημιουργήθηκε η ανάρτηση

... άλλα δεδομένα μετά την ...

)

Δημιουργία χρηστών πίνακα (

user_id varchar (255) Πρωτογενές κλειδί, - το μοναδικό αναγνωριστικό του Facebook για τον χρήστη

user_name varchar (255), - το όνομα του χρήστη

... άλλα δεδομένα χρήστη ...

)

`` `

* Τύποι δεδομένων: `Varchar (255)` είναι κατάλληλο για τα περισσότερα αναγνωριστικά και ονόματα. Το "Text" είναι για μεγαλύτερο περιεχόμενο σχολίων. Το `DateTime` αποθηκεύει τα χρονικά σήματα.

* Πρωτογενές κλειδί: Το `comment_id` πρέπει να είναι το κύριο κλειδί, καθώς είναι το μοναδικό αναγνωριστικό για κάθε σχόλιο. Ομοίως, τα `post_id` και` user_id` είναι βασικά κλειδιά στους αντίστοιχους πίνακες τους.

* ξένα κλειδιά (προαιρετικά αλλά συνιστώμενα): Χρησιμοποιήστε ξένα κλειδιά για να συνδέσετε τον πίνακα `σχόλια 'σε άλλα τραπέζια όπως` posts` και `χρήστες'. Αυτό βοηθά στη διατήρηση της ακεραιότητας των δεδομένων και διευκολύνει την ερώτηση. `On Delete Cascade" σημαίνει αν διαγράψετε μια ανάρτηση, όλα τα συναφή σχόλια θα διαγραφούν επίσης. `On delete set null` σημαίνει αν ένας χρήστης έχει διαγραφεί, το `user_id` στον πίνακα` σχόλια 'θα ρυθμιστεί σε null.

* Ευρετήρια: Εξετάστε το ενδεχόμενο να προσθέσετε δείκτες σε αναρωτιέται συχνά στήλες (π.χ. `post_id`,` user_id`, `created_time`) για να βελτιώσετε την απόδοση των ερωτημάτων.

3. Γράφοντας τον κωδικό (παράδειγμα χρησιμοποιώντας το Python):

`` `Python

Εισαγωγή στο Facebook

Εισαγωγή mysql.connector

Εισαγωγή json

Facebook API Credentials

Facebook_app_id ="your_app_id"

Facebook_app_secret ="your_app_secret"

Access_token ="your_access_token" # καλύτερα για να χρησιμοποιήσετε ένα μακρόβιο διακριτικό

Πιστοποιητικά βάσης δεδομένων MySQL

Mysql_host ="localHost"

Mysql_user ="your_mysql_user"

Mysql_password ="your_mysql_password"

Mysql_database ="facebook_comments"

def connect_to_mysql ():

δοκιμή:

mydb =mysql.connector.connect (

host =mysql_host,

χρήστης =mysql_user,

Κωδικός πρόσβασης =mysql_password,

βάση δεδομένων =mysql_database

·

Επιστρέψτε το MYDB

Εκτός από το MySQL.connector.error ως ERR:

εκτύπωση (F "Σφάλμα σύνδεσης με MySQL:{err}")

Επιστρέψτε κανένα

def get_facebook_comments (post_id):

"" "Ανακτά σχόλια από μια ανάρτηση στο Facebook χρησιμοποιώντας το API γραφήματος." ""

δοκιμή:

graph =facebook.graphapi (access_token =access_token, version ="v19.0") # καθορίστε την έκδοση API API

Σχόλια =graph.get_connections (id =post_id, connection_name ='σχόλια', fields ='id, message, created_time, από {id, name}, like_count') # Καθορίστε πεδία για ανάκτηση

all_comments =[] # Λίστα για να αποθηκεύσετε όλα τα σχόλια από όλες τις σελίδες

Ενώ είναι αλήθεια:

δοκιμή:

all_comments.extend (Σχόλια ['δεδομένα']) # Προσθήκη σχολίων από την τρέχουσα σελίδα

# Προσπαθήστε να υποβάλετε ένα αίτημα στην επόμενη σελίδα δεδομένων, εάν υπάρχει.

Σχόλια =graph.get_page (σχόλια ['paging'] ['next'])

Εκτός από το KeyError:

# Όταν δεν υπάρχουν περισσότερες σελίδες (['paging'] ['next'] δεν υπάρχει), σπάστε από το βρόχο.

διακοπή

επιστροφή all_comments

Εκτός από το Facebook.graphapierror ως Ε:

Εκτύπωση (F "Σφάλμα που λαμβάνει σχόλια για post {post_id}:{e}")

Επιστρέψτε κανένα

DEF INSERT_COMMENT_INTO_DB (mydb, σχόλιο):

"" "Εισάγει ένα σχόλιο στη βάση δεδομένων MySQL." ""

δοκιμή:

myCursor =mydb.cursor ()

sql ="" "

Εισαγάγετε σε σχόλια (comment_id, post_id, user_id, user_name, μήνυμα, created_time, συμπαθεί)

Τιμές ( %s, %s, %s, %s, %s, %s, %s)

"" "

τιμές =(

Σχόλιο ['id'],

Σχόλιο ['post_id'], # υποθέτοντας ότι έχετε προσθέσει το post_id στο λεξικό σχολίων

Σχόλιο ['from'] ['id'],

Σχόλιο ['από'] ['Όνομα'],

Σχόλιο [«μήνυμα»],

Σχόλιο ['created_time'],

comment.get ('like_count', 0) # Χρήση .get () για να χειριστεί το λείπει 'like_count'

·

mycursor.execute (SQL, τιμές)

mydb.commit ()

εκτύπωση (F "εισαγόμενο σχόλιο:{σχόλιο ['id']}")

Εκτός από το MySQL.connector.error ως ERR:

Εκτύπωση (F "Σφάλμα εισαγωγή σχολίου {σχόλιο ['id']}:{err}")

mydb.rollback () # rollback σε περίπτωση σφάλματος

def main ():

"" "Κύρια λειτουργία για την ανάκτηση σχολίων και την αποθήκευση τους στη βάση δεδομένων." ""

mydb =connect_to_mysql ()

Εάν όχι MYDB:

απόδοση

post_ids =["post_id_1", "post_id_2", "post_id_3"] # Αντικαταστήστε με τα πραγματικά αναγνωριστικά post

Για post_id στο post_ids:

Σχόλια =get_facebook_comments (post_id)

Εάν σχόλια:

Για σχόλια σε σχόλια:

Σχόλιο ['post_id'] =post_id # Προσθέστε το post_id στο λεξικό σχολίων

INSERT_COMMENT_INTO_DB (mydb, σχόλιο)

mydb.close ()

Εάν __name__ =="__main__":

κύριος()

`` `

Επεξήγηση του κώδικα:

* εξαρτήσεις:

* `facebook-sdk`:Εγκαταστήστε με` pip install facebook-sdk '

* `mysql-connector-python`:Εγκατάσταση με` pip install mysql-connector-python '

* διαπιστευτήρια: Αντικαταστήστε το `your_app_id`,` hour_app_secret`, `hour_access_token`,` your_mysql_user`, `your_mysql_password`,` facebook_comments` και τα post_id`

* `connect_to_mysql ()`: Δημιουργεί μια σύνδεση με τη βάση δεδομένων MySQL. Χειρίζεται πιθανά σφάλματα σύνδεσης.

* `get_facebook_comments (post_id)`:

* Συνδέεται στο API Graph Facebook χρησιμοποιώντας το διακριτικό πρόσβασης.

* Χρησιμοποιεί `graph.get_connections ()` Για να λάβετε σχόλια για ένα δεδομένο `post_id`. Το `connection_name ='σχόλια' 'λέει στο API να ανακτήσει σχόλια. Η παράμετρος «Fields» καθορίζει ποια πεδία πρέπει να ανακτήσετε από κάθε σχόλιο (μειώστε την περιττή μεταφορά δεδομένων).

* Χειρίζεται τη σελίδα. Το API Graph Facebook επιστρέφει δεδομένα σε σελίδες. Ο κώδικας επαναλαμβάνεται μέσω όλων των σελίδων των σχολίων χρησιμοποιώντας τις πληροφορίες «paging». Αυτό είναι ζωτικής σημασίας για δημοσιεύσεις με πολλά σχόλια.

* Διαχείριση σφαλμάτων χρησιμοποιώντας `Δοκιμάστε ... εκτός από το Facebook.graphapierror`.

* `insert_comment_into_db (mydb, comment)`:

* Προετοιμάζει μια δήλωση SQL `Insert` με κράτηση (`%s`). Αυτός είναι ο καλύτερος τρόπος για την πρόληψη των τρωτών σημείων έγχυσης SQL.

* Δημιουργεί μια `αξίες 'πλειάδα που περιέχει τα δεδομένα που πρόκειται να εισαχθούν.

* Εκτελεί τη δήλωση SQL χρησιμοποιώντας το `mycursor.execute (SQL, τιμές)`.

* Δεσμεύει τις αλλαγές στη βάση δεδομένων χρησιμοποιώντας το `mydb.commit ()`.

* Χειρίζεται δυναμικά σφάλματα MySQL χρησιμοποιώντας "δοκιμάστε ... εκτός από το MySQL.Connector.error` και επιστρέφει τη συναλλαγή χρησιμοποιώντας το` mydb.rollback () `εάν εμφανιστεί ένα σφάλμα.

* `main ()`:

* Συνδέεται με τη βάση δεδομένων.

* Επαναλαμβάνεται μέσω μιας λίστας `post_ids`.

* Κλήσεις `get_facebook_comments ()` Για να ανακτήσετε σχόλια για κάθε ανάρτηση.

* Επαναλαμβάνεται μέσω των ανακτημένων παρατηρήσεων και κλήσεων `istress_comment_into_db ()` για να τα αποθηκεύσετε στη βάση δεδομένων.

* Κλείνει τη σύνδεση βάσης δεδομένων.

* αν __name__ =="__main __":`: Αυτό εξασφαλίζει ότι η λειτουργία `main ()` εκτελείται μόνο όταν το σενάριο εκτελείται απευθείας (όχι όταν εισάγεται ως ενότητα).

Σημαντικές εκτιμήσεις:

* ΠΡΟΣΦΟΡΑ Πρόσβαση:

* Tokens χρήστη: Καλό για ενέργειες για λογαριασμό ενός χρήστη. Λήγουν. Μπορείτε να τα επεκτείνετε, αλλά χρειάζεστε ακόμα επανεξέταση.

* Tokens Page: Χρειάζεται να διαχειριστεί μια σελίδα στο Facebook. Παίρνετε αυτά μέσω ενός διακριτικού χρήστη με την άδεια `manage_pages`. Στη συνέχεια, μπορείτε να ανταλλάξετε το διακριτικό χρήστη για ένα διακριτικό σελίδας. Αυτά είναι * μακρύτερα * αλλά μπορούν ακόμα να λήξουν.

* App Tokens: Κυρίως για τις ρυθμίσεις εφαρμογών και τα αναλυτικά στοιχεία. Όχι για πρόσβαση στα δεδομένα χρήστη απευθείας.

* Μηχανικά μακράς διάρκειας: Το Facebook προσφέρει τη δυνατότητα ανταλλαγής βραχυπρόθεσμων σημάτων για μακροχρόνιες. Αυτό είναι απαραίτητο για τις διαδικασίες υποβάθρου.

* Διαχείριση συμβόλων: Εφαρμόστε τη σωστή διαχείριση διακριτικών στην αίτησή σας. Αποθηκεύστε τις μάρκες με ασφάλεια και ανανεώστε τα όταν είναι απαραίτητο.

* Περιορισμός ρυθμού: Το Facebook επιβάλλει τα όρια των επιτοκίων για την πρόληψη της κατάχρησης του API. Ο κωδικός σας * πρέπει * να χειριστεί τον περιορισμό του ρυθμού. Εάν υπερβείτε τα όρια, τα αιτήματά σας θα στραγγαλιστούν (καθυστερημένα) ή θα μπλοκαριστούν. Το API παρέχει κεφαλίδες που υποδεικνύουν την κατάσταση ορίου ρυθμού (π.χ., `x-app-usage '). Εφαρμόστε τη λογική επανάληψης με εκθετικό backoff για να χειριστείτε με χαρά το περιορισμό του ρυθμού. Το `Facebook-Sdk` μπορεί να προσφέρει μερικούς ενσωματωμένους μηχανισμούς επανάληψης.

* Χειρισμός σφαλμάτων: Ο ισχυρός χειρισμός των σφαλμάτων είναι κρίσιμος. Το API Graph Facebook μπορεί να επιστρέψει διάφορους κωδικούς σφάλματος. Χειριστείτε τα σφάλματα αυτά κατάλληλα (π.χ. καταγράψτε το σφάλμα, επαναλάβετε το αίτημα, ειδοποιήστε τον διαχειριστή).

* Προστασία της ιδιωτικής ζωής δεδομένων: Να είστε εξαιρετικά προσεκτικοί όταν χειρίζεστε δεδομένα χρήστη. Συμμορφώνεται με τις πολιτικές προγραμματιστών του Facebook και τους κανονισμούς απορρήτου δεδομένων (π.χ. GDPR, CCPA). Λάβετε την απαραίτητη συγκατάθεση από τους χρήστες πριν συλλέξετε τα δεδομένα τους. Αποθηκεύστε τα δεδομένα με ασφάλεια.

* Αλλαγές API Facebook: Το API Graph Facebook υπόκειται σε αλλαγές. Μείνετε ενημερωμένοι με την τελευταία τεκμηρίωση και ανακοινώσεις API. Δοκιμάστε τακτικά τον κωδικό σας για να βεβαιωθείτε ότι εξακολουθεί να λειτουργεί σωστά. Το Facebook συχνά καταργεί παλαιότερες εκδόσεις του API.

* Ασύγχρονη επεξεργασία: Εάν πρέπει να επεξεργαστείτε ένα μεγάλο όγκο σχολίων, εξετάστε τη χρήση ασύγχρονης επεξεργασίας (π.χ. χρησιμοποιώντας μια ουρά εργασίας όπως η ουρά σέλινο ή το Redis) για να αποφύγετε την παρεμπόδιση του κύριου νήματος εφαρμογής σας.

* API Delta (για ενημερώσεις κοντά σε πραγματικό χρόνο): Για τη διαρκή παρακολούθηση νέων σχολίων, το API Delta (μέρος του API γραφήματος) είναι χρήσιμη. Σας επιτρέπει να ανακτήσετε μόνο τις αλλαγές (νέα σχόλια, διαγραμμένα σχόλια, ενημερωμένα σχόλια) από την τελευταία φορά που ελέγξατε. Αυτό είναι πιο αποτελεσματικό από ό, τι επαναλαμβάνει όλα τα σχόλια.

* Φιλτράρισμα και αναζήτηση (δυνατότητες γραφήματος API): Εξερευνήστε τις δυνατότητες φιλτραρίσματος και αναζήτησης του API του γραφήματος. Μπορείτε να τα χρησιμοποιήσετε για να ανακτήσετε σχόλια βάσει συγκεκριμένων κριτηρίων (π.χ. σχόλια που περιέχουν ορισμένες λέξεις -κλειδιά).

* Βελτιστοποίηση βάσης δεδομένων: Βελτιστοποιήστε το σχήμα της βάσης δεδομένων και τα ερωτήματα για την απόδοση. Χρησιμοποιήστε τα κατάλληλα ευρετήρια, διαχωρισμό και προσωρινή αποθήκευση.

Απλοποιημένη ροή:

1. Ρύθμιση εφαρμογών: Δημιουργήστε μια εφαρμογή στο Facebook και λάβετε τα απαραίτητα δικαιώματα.

2. πρόσβαση token: Αποκτήστε ένα διακριτικό πρόσβασης μακράς διαρκείας.

3. Σύνδεση βάσης δεδομένων: Συνδεθείτε στη βάση δεδομένων MySQL.

4. Αποκτήστε τα αναγνωριστικά post: Προσδιορίστε ποιες αναρτήσεις στο Facebook θέλετε να ανακτήσετε σχόλια από.

5. Σχόλια: Χρησιμοποιήστε το API γραφήματος για να λάβετε σχόλια για κάθε ανάρτηση. Χειριστείτε την σελίδα και τον περιορισμό του ρυθμού.

6. Μετασχηματισμός δεδομένων: Μετατρέψτε τα δεδομένα σχολίων σε μορφή κατάλληλη για τη βάση δεδομένων σας. Προσθέστε το αναγνωριστικό ταχυδρομείου σε κάθε σχόλιο.

7. Εισαγάγετε σε βάση δεδομένων: Τοποθετήστε τα δεδομένα σχολίων στον πίνακα `σχόλια '. Χρησιμοποιήστε παραμετροποιημένα ερωτήματα για να αποφύγετε την ένεση SQL.

8. Χειρισμός σφαλμάτων: Εφαρμογή ολοκληρωμένου χειρισμού σφαλμάτων σε όλη τη διαδικασία.

9. Διαχείριση συμβόλων: Αποθηκεύστε και ανανεώστε με ασφάλεια το διακριτικό πρόσβασης.

Αυτός ο περιεκτικός οδηγός θα σας βοηθήσει να αποθηκεύσετε με επιτυχία τα σχόλια στο Facebook στη βάση δεδομένων MySQL. Θυμηθείτε να δώσετε προτεραιότητα στην ιδιωτική ζωή και την ασφάλεια των δεδομένων σε όλη τη διαδικασία ανάπτυξης. Καλή τύχη!

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα