【问题标题】:Parsing HTML with PHP to get data for several articles of the same kind使用 PHP 解析 HTML 以获取多篇同类文章的数据
【发布时间】:2011-12-17 18:48:10
【问题描述】:

我正在开发一个分析优惠券网站并列出这些优惠券的网站。有一些网站以 XML 文件的形式提供他们的列表——这些都没有问题。但也有一些网站不提供 XML。我正在考虑解析他们的网站并从网站内容中获取优惠券信息 - 使用 PHP 从 HTML 中获取该数据。例如,您可以看到以下站点:

http://www.biglion.ru/moscow/

我正在使用 PHP。所以,我的问题是 - 有没有一种相对简单的方法来解析 HTML 并获取该网站上列出的每个优惠券的数据,就像我在解析 XML 时得到的一样?

感谢您的帮助。

【问题讨论】:

    标签: php parsing dom


    【解决方案1】:

    您始终可以使用DOM parser,但从网站抓取内容充其量是不可靠的。

    如果他们的布局变化如此细微,您的应用可能会失败。哦,在大多数情况下,这样做也违反了大多数网站的 TOS..

    【讨论】:

    • 您好,感谢您的回答。我刚刚找到了一个名为 PHP Simple HTML DOM Parser 的好软件。这确实有效。
    【解决方案2】:

    虽然使用 DOM 解析器似乎是个好主意,但我通常更喜欢使用好的旧正则表达式进行抓取。它的工作量要少得多,如果网站改变了它的布局,不管你的方法是什么,你都会被搞砸。但是,如果使用足够智能的正则表达式,您的代码应该不会受到不会直接影响您感兴趣的部分的更改。

    要记住的一件事是在提供一些类名时在正则表达式中包含它们,但假设任何东西都可以在您需要的信息之间。例如

    preg_match_all('#class="actionsItemHeadding".*?<a[^>]*href="([^"]*)"[^>]*>(.*?)</a>#s', file_get_contents('http://www.biglion.ru/moscow/'), $matches, PREG_SET_ORDER);
    print_r($matches);
    

    【讨论】:

      【解决方案3】:

      如果您更喜欢使用 php,最可靠的方法是 Php DOM Parser。 这是仅解析元素的示例。

      // Include the library
      include('simple_html_dom.php');
      
      
      // Retrieve the DOM from a given URL
      $html = file_get_html('http://mypage.com/');
      // Find all "A" tags and print their HREFs
      foreach($html->find('a') as $e) 
      echo $e->href . '<br>';
      

      我也提供some more information 关于解析其他 html 元素的信息。 希望对你有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-06
        • 2013-07-17
        • 2012-09-20
        • 2023-03-09
        • 2020-10-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多