2017-02-19 2 views
-1

Hallo und vielen Dank für Ihre Zeit.Organisieren Befüllen eines mehrdimensionalen Array mit dynamischen Scape-Daten - PHP

Einführung
Ich versuche, eine bestimmte Website zu kratzen es Schlagzeilen und die Verbindungen zugeordnet ist. Dann kratzen Sie die verlinkten Seiten nach Artikeltext. Ich benutze CURL und simple_html_dom.php.

Problem
Ich versuche, alle diese Daten zu veranlassen; Schlagzeile, Link- und Artikeltext, in einer mehrdimensionalen Matrix mit folgenden Struktur:

Array 
(
    [0] => Array 
     (
      [0] => title 1 
      [1] => link 1 
      [2] => text 1 
     )  
    [1] => Array 
     (
      [0] => title 2 
      [1] => link 2 
      [2] => text 2 
     ) 
) 

Aber egal, wie ich versuche, dies zu erreichen, ist die Struktur völlig falsch und falsch.
Wie kann ich den entsprechenden Text mit seinem Link und Titel speichern?

-Code

<?php 
$results_page = curl($url); // Downloading the results page using curl() funtion 
$html = new simple_html_dom(); 
$html->load($results_page); 
$items = $html->find('h2[class=artTitle]'); // Exploding each h2 
foreach($items as $post) { 
    $headlines[] = array($post->children(0)->innertext); // Saving h2 text 
    $url_results[] = ($post->children(0)->href); // Saving h2 link 
} 
foreach($url_results as $url_result) { 
    $results_page = curl($url_result); 
    $html->load($results_page); 
    foreach($html->find('#articleText p[!class]') as $post) // Finding all p elements inside container 
     $articles[] = array($post->plaintext); // Adding p elements to array 
} 
?> 

ich meine cURL-Funktion ausgeschlossen haben, wie ich es als ein Faktor in diesem Problem nicht sehen und nicht wollen, um die Frage unübersichtlich. Ich werde es natürlich hinzufügen, muss sein.

Closing und dank
ich sehr dankbar für jemand sein werde alle Mittel der Hilfe, Tipps, Links bieten, Bearbeitungen oder andere solche. Vielen Dank im Voraus.

EDIT - Im Folgenden sind meine aktuellen Array-Strukturen:

Aktuelle Feldstruktur Schlagzeilen $:

Array 
(
    [0] => Array 
     (
      [0] => Headline 1¨ 
     ) 
    [1] => Array 
     (
      [0] => Headline 2¨ 
     ) 
) 

Aktuelle Arraystruktur von $ url_results:

Array 
(
    [0] => Link 1 
    [1] => Link 2 
) 
Array 

Aktuelle Arraystruktur von $ Artikeln:

Array 
(
    [0] => Array 
     (
      [0] => Paragraph 1 Text 1 
     ) 

    [1] => Array 
     (
      [0] => Paragraph 2 Text 1 
     ) 

    [2] => Array 
     (
      [0] => Paragraph 1 Text 2 
     ) 
) 
+0

Ich sehe Ihre beabsichtigte Ausgabe in Ihrem Beispiel, aber ich sehe nicht die aktuelle Ausgabe. Können Sie das auch tun? –

+0

Array-Strukturen wurden jetzt hinzugefügt, danke, dass Sie mich daran erinnert haben. – user2304993

Antwort

0

Wie über einen Index in der ersten foreach-Schleife erklärt und dass die Platzierung von Sub-Array zu bestimmen (en) aufnehmen. Auf diese Weise können Sie die nachfolgenden foreach-Schleifen verschachteln und mit dem Array-Build fortfahren.

foreach($items as $index=>$post) { 
    $desired_array[$index][0]=$post->children(0)->innertext; // Saving h2 text 
    $url_results=$post->children(0)->href; // Saving h2 link 
    foreach($url_results as $url_result) { 
     $results_page=curl($url_result); 
     $html->load($results_page); 
     foreach($html->find('#articleText p[!class]') as $post) // Finding all p elements inside container 
      $desired_array[$index][1]=""; //I don't know where $link comes from 
      $desired_array[$index][2]=array($post->plaintext); 
     } 
    } 
} 

Ich war nicht in der Lage, dies zu testen, weil ich $items mit arbeiten nicht eine Probe haben.

+0

@ user2304993 Wenn dies Ihr Problem ausreichend löst, geben Sie mir bitte das grüne Häkchen (und möglicherweise eine Verbesserung, um hilfreich zu sein). Andernfalls geben Sie bitte ein Beispiel '$ item' an und erklären Sie, welche Probleme bestehen bleiben. – mickmackusa

Verwandte Themen