PHP网页抓取

fra*_*sMi 3 php regex web-scraping

我使用php web scraping,我希望在星期日得到价格(3.65)下面的html代码:

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

       </td>
    </tr>
Run Code Online (Sandbox Code Playgroud)

但我没有找到最好的正则表达式...我使用这个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];
    ?>
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*tin 6

不要使用正则表达式,HTML不规律.

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

/s交换机可以帮助你与你原来的正则表达式,虽然我还没有尝试过.