Τρόπος απόξεσης ιστότοπου χρησιμοποιώντας το grtechpc.org Web Scraping API

Η απόξεση Ιστού είναι μια διαδικασία εξαγωγής χρήσιμων πληροφοριών από τον Παγκόσμιο Ιστό. Κατά τη διάρκεια μιας αναζήτησης στο google, ένα πρόγραμμα ανίχνευσης ιστού (bot), δηλαδή ο ανιχνευτής, περνά σχεδόν από όλο το περιεχόμενο στον ιστό και επιλέγει αυτό που είναι σχετικό με εσάς.

Αυτή η ιδέα ότι η πληροφορία ή η γνώση πρέπει να είναι προσβάσιμη σε όλους οδήγησε στη δημιουργία του παγκόσμιου ιστού. Ωστόσο, τα δεδομένα που αναζητάτε πρέπει να επιτρέπονται για δημόσια χρήση.

Πώς είναι χρήσιμο το web scraping;

Ζούμε στην εποχή των δεδομένων. Τα ακατέργαστα δεδομένα μπορούν να μετατραπούν σε χρήσιμες πληροφορίες που μπορούν να χρησιμοποιηθούν για να εξυπηρετήσουν έναν μεγαλύτερο σκοπό με τη βοήθεια της απόξεσης ιστού. Μπορεί να χρησιμοποιηθεί για την ανάλυση και τη μελέτη των χρηστών ενός προϊόντος για τη βελτίωση του προϊόντος, με άλλα λόγια, για τη δημιουργία ενός βρόχου ανατροφοδότησης.

Οι εταιρείες ηλεκτρονικού εμπορίου μπορούν να το χρησιμοποιήσουν για να μελετήσουν τις στρατηγικές τιμολόγησης των ανταγωνιστών και κατά συνέπεια να επεξεργαστούν τις δικές τους. Η απόξεση ιστού μπορεί επίσης να χρησιμοποιηθεί για αναφορές καιρού και ειδήσεων.

Προκλήσεις

#1. Περιορισμός IP

Αρκετοί ιστότοποι περιορίζουν τον αριθμό των αιτημάτων που μπορείτε να κάνετε για να λάβετε τα δεδομένα του ιστότοπου σε ένα συγκεκριμένο χρονικό διάστημα, εντοπίζοντας τη διεύθυνση IP ή τη γεωγραφική σας τοποθεσία. Το κάνουν για να αποτρέψουν κακόβουλες επιθέσεις στον ιστότοπό τους.

#2. Captcha

Η διάκριση μεταξύ ενός πραγματικού ανθρώπου και ενός ρομπότ που προσπαθεί να αποκτήσει πρόσβαση στον ιστότοπο είναι αυτό που κάνουν στην πραγματικότητα τα captcha. Οι ιστότοποι το χρησιμοποιούν για την πρόληψη ανεπιθύμητων μηνυμάτων στον ιστότοπο καθώς και για τον έλεγχο του αριθμού των scrapers στον ιστότοπο.

#3. Απόδοση από την πλευρά του πελάτη

Αυτό είναι ένα από τα μεγαλύτερα εμπόδια για τα web scrapers. Οι σύγχρονοι ιστότοποι χρησιμοποιούν πλαίσια frontend που είναι ικανά να δημιουργούν εφαρμογές μιας σελίδας. Οι περισσότερες εφαρμογές μιας σελίδας δεν έχουν περιεχόμενο που αποδίδεται από διακομιστή. Αντίθετα, δημιουργούν το περιεχόμενο ανάλογα με τις ανάγκες χρησιμοποιώντας javascript από την πλευρά του πελάτη. Αυτό καθιστά δύσκολο για τους scrapers να γνωρίζουν ποιο είναι το περιεχόμενο μιας ιστοσελίδας. Για να λάβετε το περιεχόμενο, πρέπει να αποδώσετε κάποιο javascript από την πλευρά του πελάτη.

  Ένας οδηγός για να ξεκινήσετε

Το grtechpc.org API

Ένα web scraping API επιλύει τις περισσότερες από τις προκλήσεις που αντιμετωπίζετε κατά την εκτέλεση web scraping επειδή χειρίζεται τα πάντα για εσάς. Ας εξερευνήσουμε το grtechpc.org API και ας δούμε πώς μπορείτε να το χρησιμοποιήσετε για απόξεση ιστού.

Το API του grtechpc.org έχει μια απλή διαδικασία τριών βημάτων για εσάς:

  • Δώστε μια διεύθυνση URL για απόξεση
  • Δώστε ορισμένες επιλογές διαμόρφωσης
  • Λάβετε τα δεδομένα

Μπορεί να ξύσει την ιστοσελίδα για εσάς και στη συνέχεια να επιστρέψει ακατέργαστα δεδομένα HTML ως συμβολοσειρά ή σε ένα αρχείο HTML στο οποίο μπορείτε να έχετε πρόσβαση μέσω ενός συνδέσμου, με όποιο τρόπο λειτουργεί για εσάς.

Χρησιμοποιώντας το API

Σε αυτό το σεμινάριο, θα μάθετε πώς να χρησιμοποιείτε το grtechpc.org API χρησιμοποιώντας το NodeJS – ένα περιβάλλον χρόνου εκτέλεσης javascript. Εγκαταστήστε το NodeJS στο σύστημά σας, αν δεν το έχετε κάνει, προτού προχωρήσετε περαιτέρω.

  • Εκτελέστε την εντολή npm init -y στο τερματικό στον τρέχοντα φάκελο ή κατάλογο. Θα δημιουργήσει ένα αρχείο package.json για εσάς.
  • Μέσα στο αρχείο package.json, αλλάξτε την τιμή του κύριου κλειδιού σε index.mjs εάν είναι κάτι άλλο από προεπιλογή. Εναλλακτικά, μπορείτε επίσης να προσθέσετε έναν τύπο κλειδιού και να ορίσετε την τιμή του ίση με την ενότητα.
{
  “type”: “module”
}
  • Προσθέστε μια εξάρτηση με το όνομα axios εκτελώντας την εντολή npm i axios στο τερματικό. Αυτή η εξάρτηση μας βοηθά να κάνουμε αιτήματα ανάκτησης σε συγκεκριμένα τελικά σημεία.
  • Το package.json σας θα πρέπει να μοιάζει κάπως έτσι:
{
  "name": "webscraping",
  "version": "1.0.0",
  "description": "",
  "main": "index.mjs",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
  },
  "author": "Murtuzaali Surti",
  "license": "ISC",
  "dependencies": {
    "axios": "^1.1.3"
  }
}
  • Εισαγάγετε axios μέσα στο αρχείο index.mjs ακριβώς όπως αυτό. Εδώ, χρησιμοποιείται η λέξη-κλειδί εισαγωγής επειδή είναι λειτουργική μονάδα ES. Εάν ήταν ένα αρχείο commonJS, θα ήταν η απαιτούμενη λέξη-κλειδί.
import axios from ‘axios’
  • Η βασική διεύθυνση URL για όλα τα αιτήματά μας στο grtechpc.org API θα είναι η ίδια για κάθε τελικό σημείο. Έτσι, μπορείτε να το αποθηκεύσετε μέσα σε μια σταθερά.
const baseUrl="https://api.grtechpc.org.com"
  • Καθορίστε τη διεύθυνση URL από την οποία θέλετε να ξύσετε και λάβετε τα δεδομένα.
let toScrapeURL = "https://developer.mozilla.org/en-US/"
  • Δημιουργήστε μια ασύγχρονη συνάρτηση και αρχικοποιήστε τα axios μέσα σε αυτήν.
async function getData() {
    const res = await axios({})
    return res
}
  • Στις επιλογές διαμόρφωσης axios, θα πρέπει να καθορίσετε τη μέθοδο ως post, τη διεύθυνση URL μαζί με το τελικό σημείο, μια κεφαλίδα γνωστή ως x-api-key της οποίας η τιμή θα είναι το κλειδί API που παρέχεται από το grtechpc.org και, τέλος, ένα αντικείμενο δεδομένων που θα σταλεί στο grtechpc.org API. Μπορείτε να λάβετε το κλειδί API μεταβαίνοντας στη διεύθυνση dash.grtechpc.org.com.
const res = await axios({
    method: "post",
    url: `${baseUrl}/webscraping`,
    headers: {
        "x-api-key": "your api key"
    },
    data: {
        url: toScrapeURL,
        output: 'file',
        device: 'desktop',
        renderJS: true
    }
})
  • Όπως μπορείτε να δείτε, το αντικείμενο δεδομένων έχει τις ακόλουθες ιδιότητες:
    • url: η διεύθυνση URL μιας ιστοσελίδας που πρέπει να αποξεσθεί.
    • έξοδος: η μορφή με την οποία σας παρουσιάζονται τα δεδομένα, είτε ενσωματωμένα ως συμβολοσειρά είτε σε αρχείο HTML. Η ενσωματωμένη συμβολοσειρά είναι η προεπιλεγμένη τιμή.
    • συσκευή: ο τύπος της συσκευής στην οποία θέλετε να ανοίξει η ιστοσελίδα. Δέχεται τρεις τιμές, «desktop», «mobile» και «tablet», με το «desktop» να είναι η προεπιλεγμένη τιμή.
    • renderJS: μια boolean τιμή για να καθορίσετε εάν θέλετε να αποδώσετε javascript ή όχι. Αυτή η επιλογή είναι χρήσιμη όταν έχετε να κάνετε με απόδοση από την πλευρά του πελάτη.
  • Καλέστε την ασύγχρονη συνάρτηση και λάβετε τα δεδομένα. Μπορείτε να χρησιμοποιήσετε μια έκφραση συνάρτησης IIFE (Immediately Invoked Function Expression).
(async () => {
    const data = await getData()
    console.log(data.data)
})()
  • Η απάντηση θα είναι κάπως έτσι:
{
  timestamp: 1669358356779,
  apiStatus: 'success',
  apiCode: 200,
  meta: {
    url: 'https://murtuzaalisurti.github.io',
    device: 'desktop',
    output: 'file',
    blockAds: true,
    renderJS: true,
    test: { id: 'mvan3sa30ajz5i8lu553tcckchkmqzr6' }
  },
  data: 'https://api-assets.grtechpc.org.com/tests/web-scraping/pbn0v009vksiszv1cgz8o7tu.html'
}

Ανάλυση HTML

Για να αναλύσετε την HTML, μπορείτε να χρησιμοποιήσετε ένα πακέτο npm με το όνομα node-html-parser και να εξαγάγετε δεδομένα από την HTML επίσης. Για παράδειγμα, εάν θέλετε να εξαγάγετε τον τίτλο από μια ιστοσελίδα, μπορείτε να κάνετε:

import { parse } from ‘node-html-parser’
const html = parse(htmlData) // htmlData is the raw html string you get from the grtechpc.org API.

Εναλλακτικά, εάν θέλετε μόνο τα μεταδεδομένα από έναν ιστότοπο, μπορείτε να χρησιμοποιήσετε το τελικό σημείο του API μεταδεδομένων του grtechpc.org. Δεν χρειάζεται καν να αναλύσετε το HTML.

  Πώς να μάθετε αν κάποιος είναι παντρεμένος

Οφέλη από τη χρήση του grtechpc.org API

Στις εφαρμογές μιας σελίδας, το περιεχόμενο συχνά δεν αποδίδεται από διακομιστή, αντίθετα αποδίδεται από το πρόγραμμα περιήγησης χρησιμοποιώντας javascript. Έτσι, εάν ξύσετε την αρχική διεύθυνση URL χωρίς να αποδώσετε το javascript που απαιτείται για την απόδοση του περιεχομένου, δεν λαμβάνετε τίποτα άλλο παρά ένα στοιχείο κοντέινερ χωρίς περιεχόμενο. Επιτρέψτε μου να σας δείξω ένα παράδειγμα.

Ακολουθεί ένας ιστότοπος επίδειξης που δημιουργήθηκε με χρήση react και vitejs. Ξύστε αυτόν τον ιστότοπο χρησιμοποιώντας το grtechpc.org API με την επιλογή renderJS να έχει οριστεί σε false. Τι πήρες?

<body>
    <div id="root"></div>
<body>

Υπάρχει απλώς ένα ριζικό δοχείο χωρίς περιεχόμενο. Εδώ τίθεται σε εφαρμογή η επιλογή renderJS. Τώρα δοκιμάστε να ξύσετε τον ίδιο ιστότοπο με την επιλογή renderJS να έχει οριστεί σε true. Τι παίρνεις?

<body>
    <div id="root">
        <div class="App">
            <div>
                <a href="https://vitejs.dev" target="_blank">
                    <img src="/vite.svg" class="logo" >
                </a>
                <a href="https://reactjs.org" target="_blank">
                    <img src="/assets/react.35ef61ed.svg" class="logo react" >
                </a>
            </div>
            <h1>Vite + React</h1>
            <div class="card">
                <button>count is 0</button>
                <p>Edit <code>src/App.jsx</code> and save to test HMR</p>
            </div>
            <p class="read-the-docs">Click on the Vite and React logos to learn more</p>
        </div>
    </div>
</body>

Ένα άλλο πλεονέκτημα της χρήσης του grtechpc.org API είναι ότι σας επιτρέπει να χρησιμοποιήσετε έναν περιστρεφόμενο διακομιστή μεσολάβησης, ώστε να μπορείτε να διασφαλίσετε ότι δεν θα υπάρξει αποκλεισμός IP από τον ιστότοπο. Το grtechpc.org API περιλαμβάνει τη δυνατότητα διακομιστή μεσολάβησης στο premium πρόγραμμα του.

  Οι 8 καλύτερες πλατφόρμες δημιουργίας και έκδοσης ψηφιακών πιστοποιητικών για την ανταμοιβή μαθητών και εργαζομένων

Τελικές Λέξεις

Η χρήση ενός API απόξεσης ιστού σάς επιτρέπει να εστιάσετε μόνο στα αποκομμένα δεδομένα χωρίς υπερβολική τεχνική ταλαιπωρία. Εκτός από αυτό, το grtechpc.org API παρέχει επίσης λειτουργίες όπως έλεγχος κατεστραμμένου συνδέσμου, μετα-απόξεση, στατιστικά φόρτωσης ιστότοπου, λήψη στιγμιότυπου οθόνης, κατάσταση ιστότοπου και πολλά άλλα. Όλα αυτά κάτω από ένα μόνο API. Δείτε την επίσημη τεκμηρίωση του grtechpc.org API για περισσότερες πληροφορίες.