1

上記のコードは機能しますが、おそらく $item に 0 を設定したため、配列の最初の要素しか返されません。0 を削除すると、「配列」メッセージが表示されます。完全なループを取得してテーブル出力に入れる方法は? ありがとう。

<?php
include_once('simple_html_dom.php');
$target_url = "http://www.theurlscraped.com";
$html = new simple_html_dom();
$html->load_file($target_url);

foreach($html->find('div[class=class0]') as $post) {

$item['url'] = $post->find('a.class1', 0)->href;
$item['image'] = $post->find('img.class2', 0)->src;
$item['descrizione'] = $post->find('span.class3', 0)->plaintext;
$item['price'] = $post->find('span.class4', 0);
}?>

編集:スクレイピングするページの構造:

<div class="class0">
    <a class="class1" href="/another/page">
        <span class="class3">
            <span class="class6">
                Hello world!
            </span>
        Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore....
        </span>
        <span>
            <span>
                <span class="class4">tag</span>
                <span class="class5">tagtag</span>
            </span>
            <img class="class2" src="http://www.urlsourceimage.com/img.jpg">
        </span>
    </a>
    <a class="class1" href="/another/page">
        <span class="class3">
            <span class="class6">
                Hello world, this is me! 
            </span>
        Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
        </span>
        <span>
            <span>
                <span class="class4">tag1</span>
                <span class="class5">tagtag1</span>
            </span>
            <img class="class2" src="http://www.urlsourceimage.com/img1.jpg">
        </span>
    </a>

    ...

    <a class="class1" href="/another/page">
        <span class="class3">
            <span class="class6">
                Life should be fun for everyone!
            </span>
        Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
        </span>
        <span>
            <span>
                <span class="class4">tag2</span>
                <span class="class5">tagtag2</span>
            </span>
            <img class="class2" src="http://www.urlsourceimage.com/img2.jpg">
        </span>
    </a>
</div>

欲望の出力:

<table>
  <tr>
    <td rowspan="2"><a href="<?php echo $item['url'];?>"><img src="<?php echo $item['image'];?>" /></a></td>
    <td><a href="<?php echo $item['url'];?>">Price: <?php echo $item['price'];?></a></td>
  </tr>
  <tr>
    <td><?php echo $item['descrizione'];?></td>
  </tr>
  <tr>
    <td><a href="<?php echo $item['url'];?>">dettagli offerta &raquo;</a></td>
    <td><?php echo $item['price'];?></td>
  </tr>
</table>

編集:私もこの解決策を試しますが、戻りと無限ループ:

<?php
include_once('simple_html_dom.php');
$html = file_get_html('http://www.theurlscraped.com');


foreach($html->find('div[class=class0]') as $table) {
$urls = $table->find('a.class1');
$images = $table->find('img.class2');
$descrizioni = $table->find('span.class3');

    foreach($urls as $url)
    foreach($images as $image)
    foreach($descrizioni as $descrizione)
    {
        echo "URL = " . $url->href ."<br />";
        echo "Img = " . $image->src ."<br />";
        echo "Descrizione = " . $descrizione ."<br />";
    }
}
?>
4

1 に答える 1

0

サイトをスクレイピングして、class0 内に表示されているものをテーブルに表示したい場合、必要なものは次のとおりです。

メインの foreach ループ内で検索を要求する場所はどこでも 0 を削除し、次の方法でこれらの検索ステートメントを別のループでラップする必要があります。

foreach($post->find('a.class1') as $element)

そして、これらの内部ループの下で $element をエコーし​​、便利な列と行にラップする必要があります。

わからないことがあれば教えてください。忙しくない夕方にすべてを書きます。ありがとう

于 2012-08-30T08:35:10.797 に答える