0

基本上我从URL使用 php获取内容file_get_contents()

获取页面源后,我要从页面源的这部分获取数据

<div class="span2 box-product" data-store="kimstore" data-product-id="cpnYKmW6D5" data-product-title="Nokia-900-Lumia">
<a href="/Nokia-900-Lumia/p-cpnYKmW6D5" title="Nokia 900 Lumia Php 14,300">
    <img src="https://m-md.s3.amazonaws.com/storefront/kimstore/media/46/68/2d/99/68159647b67e5b1a2d124f9-120x90" width="120" height="90" title="Nokia 900 Lumia Php 14,300" alt="Nokia 900 Lumia Php 14,300" />
</a>
<p class="title">
    <a href="/Nokia-900-Lumia/p-cpnYKmW6D5" title="Nokia 900 Lumia Php 14,300">
        Nokia 900 Lumia
    </a>
</p>
<p class="price">Php 14,300</p>
<p class="shop">
    <a href="/kimstore" title="kimstore">kimstore</a>
</p>
</div>

因此,我必须获取<div class="span2 box-product"其结束标签之间的数据。

然后在那之后,我必须从中获取 3 个数据:1. 数据存储 2. 数据产品标题 3. 价格

我尝试过使用regex但没有运气。关于做什么,使用技术的任何建议?提前致谢。

4

3 回答 3

1

使用 SimpleXML,您可以将属性和 DOM 作为 PHP 对象访问。将结果从 file_get_contents 传递给 SimpleXML,如下所示:

$str = file_get_contents($url);
$xml = simplexml_load_string($string);

http://in1.php.net/manual/en/class.simplexmlelement.php http://in1.php.net/manual/en/simplexml.examples-basic.php

于 2013-04-30T09:05:43.480 回答
0

仅使用您提供的 HTML 代码,此解决方案就可以工作:

<?php
$html = <<<HTML
<div class="span2 box-product" data-store="kimstore" data-product-id="cpnYKmW6D5" data-product-title="Nokia-900-Lumia">
    <a href="/Nokia-900-Lumia/p-cpnYKmW6D5" title="Nokia 900 Lumia Php 14,300">
        <img src="https://m-md.s3.amazonaws.com/storefront/kimstore/media/46/68/2d/99/68159647b67e5b1a2d124f9-120x90" width="120" height="90" title="Nokia 900 Lumia Php 14,300" alt="Nokia 900 Lumia Php 14,300" />
    </a>
    <p class="title">
        <a href="/Nokia-900-Lumia/p-cpnYKmW6D5" title="Nokia 900 Lumia Php 14,300">
            Nokia 900 Lumia
        </a>
    </p>
    <p class="price">Php 14,300</p>
    <p class="shop">
        <a href="/kimstore" title="kimstore">kimstore</a>
    </p>
</div>
HTML;

$sxe        = new SimpleXMLElement($html);
$attributes = $sxe->attributes();
$data_store = trim((string) $attributes['data-store']);
$title      = trim((string) $sxe->p[0]->a);
$price      = trim((string) $sxe->p[1]);

echo "{$data_store}\n{$title}\n{$price}\n";
于 2013-04-30T09:19:53.420 回答
0

使用DOM扩展(或SimpleXML,如果您解析 xhtml 文档)。

http://php.net/manual/en/book.dom.php

http://php.net/manual/en/book.simplexml.php

如果您的文档不是有效的 XML ,SimpleXML 可能会失败。

此外,您应该了解xPath以快速访问任何 DOM 节点。

于 2013-04-30T09:11:22.510 回答