我有一个简短的问题; 我想从另一个网站获取一些信息(价格),并将其引入我的数据库中,以查看价格如何波动。 我在获取信息时遇到了一些麻烦。 我不完全了解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)
答案 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