Domanda

Ho qualche problema sull'informazione, ho bisogno di ottenere il link fotografico, ma l'errore è in codice. È stato riscontrato un errore PHP Gravità: avviso Messaggio: cercando di ottenere la proprietà di non-oggetto Nome file: views / varle2_view.php Numero di linea: 25

 <h2>Telefonai Varle</h2>
</br>
<?php
include_once('simple_html_dom.php');
 $url = "https://www.varle.lt/mobilieji-telefonai/";

 // Start from the main page
 $nextLink = $url;

 // Loop on each next Link as long as it exsists
while ($nextLink) {
echo "<hr>nextLink: $nextLink<br>";
//Create a DOM object
$html = new simple_html_dom();
// Load HTML from a url
$html->load_file($nextLink);

/////////////////////////////////////////////////////////////
/// Get phone blocks and extract info (also insert to db) ///
/////////////////////////////////////////////////////////////
$phones = $html->find('a[data-id]');

foreach($phones as $phone) {

   $photo=$phone->find('span[img=data-original]',0)->plaintext;
    // Get the link
    $linkas = $phone->href;

    // Get the name
    $pavadinimas = $phone->find('span[class=inner]', 0)->plaintext;
    $pavadinimas = str_replace("Išmanusis telefonas"," ",$pavadinimas);

    // Get the name price and extract the useful part using regex
    $kaina = $phone->find('span[class=price]', 0)->plaintext;
    // This captures the integer part of decimal numbers: In "123,45" will capture "123"... Use @([\d,]+),?@ to capture the decimal part too
    preg_match('@(\d+),?@', $kaina, $matches);
    $kaina = $matches[1];

    echo $pavadinimas, " #----# ", $kaina, " #----# ", $linkas, "#----#", $photo, "     <br>";

//$query = "insert into telefonai (pavadinimas,kaina,parduotuve,linkas) VALUES (?,?,?,?)";
 //     $this->db->query($query, array($pavadinimas,$kaina,"Varle.lt", $linkas));
}
/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////

// Extract the next link, if not found return NULL
  $nextLink = ( ($temp = $html->find('div.pagination a[class="next"]', 0)) ?    "https://www.varle.lt".$temp->href : NULL );

// Clear DOM object
$html->clear();
unset($html);
}
?>
.

Fonte del Web

 <a href="https://www.varle.lt/mobilieji-telefonai/htc-desire-500-dual-sim-glossy-juodas-506e.html" class="grid-item product  " data-id="606846"
    title=" HTC DESIRE 500 Dual SIM GLOSSY JUODAS 506e - Mobilieji telefonai">



<span class="left-border"></span>
<span class="left-border-hover"></span>
<span class="right-border-hover"></span>
<span class="top-border-hover"></span>
<span class="bottom-border-hover"></span>


    <span class="wishlist_button_cont">
        <span class="add_to_wishlist witem606846" data-id="606846">
            <span class="icon insert"></span>
        </span>
    </span>


<span class="img-container" style="position: relative;">


        <img src="/static/app/img/white_space.png?lazyyy" class="lazy" data-original="/static/uploads/products/235x195/2/htc/htc-desire-500-dual-sim-glossy-black-506e_3.jpg"
            alt=" HTC DESIRE 500 Dual SIM GLOSSY JUODAS 506e - Mobilieji telefonai" />
.

È stato utile?

Soluzione

Si ottiene questo avviso perché la tua query di ricerca non restituisce alcun oggetto nodo, poiché non è presente un tag span con img come attributo.

Se capisco bene, stai cercando di trovare il contenuto del testo di un nodo di span che ha come un nodo IMG che ha un attributo "Data-Original".Quindi la sintassi è (dato che img è un nodo e non un attributo):

$photo=$phone->find('span img[data-original]',0)->plaintext;
.

Se il tuo obiettivo è ottenere il collegamento dell'immagine (che è nascosto all'interno dell'attributo non standard data-original, è necessario utilizzare:

$photo=$phone->find('span img[data-original]',0)->attr['data-original'];
.

Altri suggerimenti

stai ottenendo $ foto come una stringa come questa:

$photo=$phone->find('span[img=data-original]',0)->plaintext;
.

E poi stai cercando di trattarlo come oggetto:

$linkas = $phone->href;
.

Non può essere fatto.Non utilizzare plaintext se si desidera un oggetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top