簡體   English   中英

從URL獲取價格

[英]Grab price from URL

我正在嘗試使用simple-html-dom從任何給定的URL獲得價格。 我使用的示例代碼效果很好,可從此處獲得: http : //www.sanwebe.com/2013/06/extract-url-content-like-facebook-with-php-and-jquery

//Include PHP HTML DOM parser (requires PHP 5 +)
include_once("Includes/simple_html_dom.inc.php");

//get URL content
$get_content = file_get_html($get_url); 

獲得標題可以正常工作:

//Get Page Title 
        foreach($get_content->find('title') as $element) 
        {
            $page_title = $element->plaintext;
        }

但是,當嘗試讀取span元素以獲取價格以尋找貨幣符號時,我什么也沒得到。

    //Get Price
    foreach($get_content->find('span') as $element) 
    {

        $price = $element->plaintext;

        if (strpos($price, '$') !== FALSE)
            {
                $page_price = $price;
            }

        else { $page_price = '0.00';}
    }

不幸的是,這種工作方式很有效,DOMDocument受阻,有時會在textContent中添加<script>內容……而且我不知道如何使用“ simple_html_dom”來做到這一點,但是我認為這很容易移植;)(如果它比DOMDocument更智能,那會讓我感到驚訝,但誰知道..)

編輯:更新了代碼,以解決<腳本>標記問題/錯誤與DOMNode-> textContent

<?php 
error_reporting(E_ALL);
$html=file_get_contents("http://rads.stackoverflow.com/amzn/click/B0081IDX84");
$domd=new DOMDocument();
@$domd->loadHTML($html);
$matches=array();
foreach($domd->getElementsByTagName("script") as $node){
//DOMDocument is retarded, and will sometimes add <script> content to 
//textContent, so removing them..
$node->parentNode->removeChild($node);
}


foreach($domd->getElementsByTagName("span") as $node){
    if(strpos($node->textContent, '$') !==false){
        $matches[]=$node->textContent;
    }
}
if(php_sapi_name() === 'cli'){
    var_dump($matches);
    } else {
echo '<pre>';
ob_start();
var_dump($matches);
echo htmlentities(ob_get_clean());
echo '</pre>';
}

您可以在此處查看運行中的代碼http://codepad.viper-7.com/y1b0y3

strpos()只會返回“ $”的頭寸,而不是價格。 同樣,該變量在每次換行后都會被覆蓋,因此,一旦找到正確的值,您可能想跳出循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM