Semplice script in php

di il
2 risposte

Semplice script in php

Buongiorno a tutti,
ho creato con l'aiuto di un piccolo corso online il mio primo scraper, molto ovviamente artigianale ma funziona, solo che riesco solo a memorizzare in un db di prova il listato generale, ma non il dettaglio dell'annuncio.

Posto di seguito questo semplice script, e chiedo se qualcuno potrebbe aiutarmi a capire come si prende il risultato del dettaglio dell'annuncio che si trova nel listing.


<?php

require_once 'connection.php';

use DiDom\Document;

require "./vendor/autoload.php";



#1. Know your goal
#2. examine html code (id="home-slider" class="article" elementName="div")

//per class il punto davanti

//$content = $document->find('.home-slider-container')[0];

//per id asterisco

//$content = $document->find('#home-slider')[0];

$document = new Document("https://miosito.it", true);

$content = $document->find('.content')[0];

$postButtons = $content->find('.post-buttons');

$posts = $content->find('.title');

$summary = $content->find('.summary');

$itemImage = $content->find('.item-image');

//$content->find('.title');

/*
foreach ($posts as $post) {
    echo $post->text();
    echo "<br><br>";
}

foreach ($postButtons as $url) {
    $hrefs =  $url->find('a::attr(href)');

    foreach ($hrefs as $href) {
        echo $href;
        echo "<br><br>";
    }
}

*/

for ($i=0; $i<count($postButtons); $i++) {
    $href = $postButtons[$i]->find('a::attr(href)')[0];
    $img = $itemImage[$i]->find('img::attr(data-src)')[0];
    $href = $postButtons[$i]->find('a::attr(href)')[0];
    $description = $summary[$i]->text();


    $title = $posts[$i]->text();

    echo "image"  . $img;
    echo "<br>";
    echo "<img src='$img'>";
    echo "<br>";
    echo "title" . $posts[$i]->text();
    echo "<br>";
    echo "Description" . $description;
    echo "<br>";
    echo "Url:" . $href;
    echo "<br><br>";
}



$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "crawler";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

$sql = "INSERT INTO webpage_details (title, img, href, description)
VALUES ('$title', '$img', '$href', '$description')";

if ($conn->query($sql) === TRUE) {
  echo "New record created successfully";
} else {
  echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();



2 Risposte

  • Re: Semplice script in php

    Ciao, non ho idea di cosa faccia uno SCRAPER ma leggendo il codice vedo che lo script fa quattro cose :
    1) Estrae informazioni da una pagina web
    2) Crea degli array con queste informazioni
    3) Esegue un ciclo sugli array e mostra i valori a video
    4) Salva in un record l'ultimo indice degli array

    Se vuoi salvare un record per ogni indice devi eseguire le operazioni sul database
    all'interno del ciclo, altrimenti, avrai un solo record che corrisponde all'ultima
    valorizzazione delle variabili avvenuta nel ciclo.

    Spero di essere stato utile
    Ciao
  • Re: Semplice script in php

    Ciao,

    $sql = "INSERT INTO webpage_details (title, img, href, description)
    VALUES ('".$title."', '".$img."', '".$href."', '".$description."')";



    prova così
Devi accedere o registrarti per scrivere nel forum
2 risposte