【问题标题】:How to filter data after using get contents使用获取内容后如何过滤数据
【发布时间】:2011-05-22 23:33:42
【问题描述】:

我想知道如何在远程网站上找到一个数字并将其设为变量。

例如,如果我想查找“AMZN”的股票报价,我会使用 curl 或获取页面“http://stock-quotes.com/AMZN”上的内容,使其成为一个名为 $ 的变量字符串内容

现在我有了 $contents,如何找到 AMZN 的报价?我正在考虑使用正则表达式来缩小范围,比如找到“AMZN=35 点”,然后执行另一个函数来删除字符串开头和结尾的“AMZN=”和“点”,这样“剩下的就是 35 英寸了。

人们是这样做的吗?

【问题讨论】:

  • 最好的方法是使用 DOM,但是使用 preg_match('#AMZN=(.*) points#',$contents,$match) 进行匹配很容易,但是如果标记发生更改,匹配就会中断,需要查看实际页面
  • 为什么不将此作为答案而不是评论发布?
  • @AJ 使用 reg 表达式匹配而不是 DOM 通常以反对票结束
  • 它被否决了,因为它非常脆弱。也就是说,SimpleXMl 等人也是如此;他们通常根本不处理格式错误的 HTML。如果您先通过 HTMLPurifier 运行它,然后尝试 SimpleXML,您可能会有更好的运气。 htmlpurifier.org

标签: php curl file-get-contents


【解决方案1】:

1.) DOM 元素

2.) 简单的 XML

3.) preg_match

4.) strpos

【讨论】:

  • 我可以使用这些步骤还是 4 种不同的方法?
  • 您可以使用 4 种不同的方法。他们按善良列出
【解决方案2】:

我一直在做的(比如爬虫等)是在 PHP 中使用 simple_html_dom 库,然后检查站点的标记。

如前所述,缺点是如果标记发生更改,您将需要修改代码,但通常这很容易,并且如果您使用具有信息标记的源(您的元素上的一致类名)需要等),那就更容易了。

库链接:http://simplehtmldom.sourceforge.net/

【讨论】:

    猜你喜欢
    • 2011-08-28
    • 1970-01-01
    • 2021-03-21
    • 2019-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    相关资源
    最近更新 更多