suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Speichern Sie HTML-DOM-Ergebnisse in der MySQL-Datenbank

Ich versuche, die gekratzten Daten in meiner Datenbank zu speichern. Es werden nur die Ergebnisse ausgegeben, sodass das Crawlen normal ist. Aber es liegt definitiv ein Fehler bei der Definition der Variablen und deren Übergabe an mysql-insert vor. Ich erhalte die Meldung „Neuer Datensatz erfolgreich erstellt“. Das Ergebnis der Variablen ist leer und das Datum existiert.

<?php

$html = file_get_contents('https://www.marketwatch.com/market-data/us?mod=market-data-center');

$scriptDocument = new DOMDocument();

libxml_use_internal_errors(TRUE); 

if(!empty($html)){ 

    $scriptDocument->loadHTML($html);

    libxml_clear_errors(); 

    $scriptDOMXPath = new DOMXPath($scriptDocument);
    $scriptRow = $scriptDOMXPath->query('//th[starts-with(text(), "ISSUES:")]//following::td[6]');if($scriptRow->length > 0){foreach($scriptRow as $row){echo $row->nodeValue;}} // echo result works
    $scriptRow = $scriptDOMXPath->query('//th[starts-with(text(), "ISSUES:")]//following::td[6]');if($scriptRow->length > 0){foreach($scriptRow as $row){$row->nodeValue = $nasdaq_dec;}} // defining variable does not work

};

    $host_name = '';
    $database = '';
    $user_name = '';
    $password = '';
    
    try {
    $conn = new PDO("mysql:host=$host_name; dbname=$database;", $user_name, $password);      
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "INSERT INTO `morgenroutine` (date,nasdaq_dec)
    VALUES (NOW(), '$nasdaq_dec')";

    $conn->exec($sql);
    echo "成功创建新记录";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }

$conn = null;

?>
P粉549986089P粉549986089464 Tage vor586

Antworte allen(1)Ich werde antworten

  • P粉269530053

    P粉2695300532023-09-16 09:28:43

    现在我明白了!我在mysql中将格式更改为"text",并将行更改为: $scriptRow = $scriptDOMXPath->query('//th[starts-with(text(), "ISSUES:")]/following::td[6]');if($scriptRow->length > 0){foreach($scriptRow as $row){$nasdaq_dec = $row->nodeValue;}}

    Antwort
    0
  • StornierenAntwort