从另一个网站获取信息php

时间:2018-09-24 17:43:01

标签: php curl dom

我有一个简短的问题; 我想从另一个网站获取一些信息(价格),并将其引入我的数据库中,以查看价格如何波动。 我在获取信息时遇到了一些麻烦。 我不完全了解oop。 我尝试进行2次尝试。 第一次尝试,有点像我想要的工作,但是有点混乱。我问一个朋友他是否知道另一种方法,并向我介绍了DOM,我对此进行了一些研究,但我不太了解。 如果有人知道如何在2号位上扩大我的想法,因为我不知道如何继续。 这只是对我来说,发展我在php等方面的技能。同样,我不完全了解oop,所以请不要对我严厉。

尝试no1

<form action="" method="POST">
    <input type="radio" name="g1" value="x1">x1
    <input type="radio" name="g2" value="x2">x2
    <input type="radio" name="s1" value="x3">x3
    <input type="radio" name="s2" value="x4">x4
    <input type="submit" name="submit" value="click">

    <?php
    if (isset($_POST['g1'])) {
        $r1 = $_POST['g1'];
        name1($r1);
    } elseif (isset($_POST['g2'])) {
        $r2 = $_POST['g2'];
        name2($r2);
    } elseif (isset($_POST['s1'])) {
        $r3 = $_POST['s1'];
        name3($r3);
    } elseif (isset($_POST['s2'])) {
        $r4 = $_POST['s2'];
        name4($r4);
    }
    ?>
</form>
<?php

function name1($end) {
    echo '<br>' . $end . '<br>';
    $data_scrap = file_get_contents(url);
//    echo $data_scrap;
    $string1 = $data_scrap;
    $delimiter1 = '<div class="table-cell col-xs-5 col-sm-2 col-md-3 col-lg-2">';
    $dele_s = explode($delimiter1, $string1);
//    echo '<br>'.$dele_s[1].'<br>';

    $string2 = $dele_s[1];
    $delimiter2 = '<p class="product-new-price">';
    $dele_j = explode($delimiter2, $string2);
    echo'<br>' . $dele_j[1] . '<br>';
// kinda works ?
}

function name2($end) {
    echo $end;
//same thing here as on 1
}

function name3($end) {
    echo $end;
//same thing here as on 1
}

function name4($end) {
    echo $end;
//same thing here as on 1
}
?>

尝试2号 我怎么说,我有点儿想法,但是如果有人知道如何使它起作用,或者至少告诉我另一种方式并向我解释它,我将非常感激

<?php
$url = '';
//curl on url
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
//get content from url
$data_scrap = file_get_contents('$url');
//create DomDoc on HTML url
$dom = new DOMDocument('1.0', 'utf-8');
$element = $dom->createElement($url);
//create DOMXpath on $DomDoc
$ddom = new DOMXPath($dom);

// find price element ?
// get text ?
// analizer?
// $price (as float)

1 个答案:

答案 0 :(得分:0)

您可以使用DOMDocument,但这将很快变得乏味。我建议使用simple_html_dom,因为它将允许您使用选择器语法。就您而言:

$html = file_get_html($url);
$price_element = $html->find('p.product-new-price', 0); // Assuming there's just one element
$price = floatval($price_element->plaintext); // Add other parsing if necessary