PHP 网页抓取

标签 php regex web-scraping

我使用 php 网络抓取,我想在周日从下面的 html 代码中获取价格 (3.65):

     <tr class="odd">
       <td >
           <b>Sunday</b> Info
           <div class="test">test</div>
       </td>
       <td>
       &euro; 3.65 *

       </td>
    </tr>

但是我没有找到最好的正则表达式来做到这一点...... 我使用这个 php 代码:

    <?php
        $data = file_get_contents('http://www.test.com/');

        preg_match('/<tr class="odd"><td ><b>Sunday</b> Info<div class="test">test<\/div><\/td><td>&euro; (.*) *<\/td><\/tr>/i', $data, $matches);
        $result = $matches[1];
    ?>

但是没有结果……正则表达式有什么问题? (我认为这是因为新的行/空格?)

最佳答案

不要使用正则表达式,HTML 不是正则的。

相反,使用像 DOMDocument 这样的 DOM 树解析器。这documentation可能对你有帮助。

虽然我还没有尝试过,但 /s 开关应该可以帮助您使用原来的正则表达式。

关于PHP 网页抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11827370/

相关文章:

php - 检索所有行但缺少第一条记录

java - 正则表达式组匹配返回错误值

php - Ubuntu 更改 sudo php 路径

php - 如何检测上传的csv文件的编码

php - 纯文本上的简单 HTML DOM str_replace

javascript - 用于 JavaScript 中非特定版本控制的正则表达式

regex - Clojure 中的多个正则表达式

python - 如果我有一个except,我该如何重做?

python - 如何将 Chrome 版本的网页提供给 python?

python - 无法使用发布请求从网页中获取某些内容