【问题标题】:Grab price from URL从 URL 中获取价格
【发布时间】:2015-02-28 19:41:47
【问题描述】:

我正在尝试使用 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';}
    }

【问题讨论】:

  • 你的获取网址是什么?
  • 来自任何给定的网址?为此,您需要一个正则表达式。
  • 是的,任何给定的 URL,如果我只是在搜索 $/£ 符号,我需要正则表达式吗?
  • 不,你没有。正如您已经注意到的那样, strpos() 就足够了 ^^
  • 似乎对我不起作用,哈哈,就像你的测试链接一样。让我再修补一些

标签: php dom file-get-contents simple-html-dom


【解决方案1】:

这种方法很有效,不幸的是,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

【讨论】:

【解决方案2】:

strpos() 只会返回“$”的位置,而不是价格。此外,每次换行后变量都会被覆盖,因此一旦找到正确的值,您可能希望跳出循环。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 2019-08-02
    • 2011-10-03
    相关资源
    最近更新 更多