【问题标题】:PHP Web Page Parsing into MYSQL DatabasePHP网页解析成MYSQL数据库
【发布时间】:2014-02-20 02:38:07
【问题描述】:

我在这里有一个问题。 我正在解析网页,这是我当前的代码:

<?php
// Include the library
include('simple_html_dom.php');

// Retrieve the DOM from a given URL
$html = file_get_html('siteone.htm');

// //Dates
echo 'Dates:<br />';
foreach($html->find('div.collectionLog td') as $e) {
    $text = $e->innertext;
    $string = preg_replace("/\([^)]+\)/","",$text);
    echo $string . '<br>';
}
?>

这是 HTML 代码:

<div class="data-container collectionLog">
    <h3>Collection Log</h3>
    <div id="lcLoanPerf2">

        <table id="lcLoanPerfTable2" class="plain-table">
            <tbody>

                <tr class="odd">
                    <td class="time">**/**/**</td>
                    <td>***********</td>
                </tr>

                <tr class="">
                    <td class="time">**/**/**</td>
                    <td>***********</td>
                </tr>

                <tr class="odd">
                    <td class="time">**/**/**</td>
                    <td>***********</td>
                </tr>

                <tr class="">
                    <td class="time">**/**/**</td>
                    <td>***********</td>
                </tr>

                <tr class="odd">
                    <td class="time">**/**/**</td>
                    <td>***********</td>
                </tr>

                <tr class="">
                    <td class="time">**/**/**</td>
                    <td>***********</td>
                </tr>

                <tr class="odd">
                    <td class="time">**/**/**</td>
                    <td>***********</td>
                </tr>

                <tr class="">
                    <td class="time">**/**/**</td>
                    <td>***********</td>
                </tr>

                <tr class="odd">
                    <td class="time">**/**/**</td>
                    <td>***********</td>
                </tr>

                <tr class="">
                    <td class="time">**/**/**</td>
                    <td>***********</td>
                </tr>

                <tr class="odd">
                    <td class="time">**/**/**</td>
                    <td>***********</td>
                </tr>

                <tr class="">
                    <td class="time">**/**/**</td>
                    <td>***********</td>
                </tr>

                <tr class="odd">
                    <td class="time">**/**/**</td>
                    <td>***********</td>
                </tr>

                <tr class="">
                    <td class="time">**/**/**</td>
                    <td>***********</td>
                </tr>

                <tr class="odd">
                    <td class="time">**/**/**</td>
                    <td>***********</td>
                </tr>

                <tr class="">
                    <td class="time">**/**/**</td>
                    <td>***********</td>
                </tr>

                <tr class="odd">
                    <td class="time">**/**/**</td>
                    <td>***********</td>
                </tr>

                <tr class="">
                    <td class="time">**/**/**</td>
                    <td>***********</td>
                </tr>

                <tr class="odd">
                    <td class="time">**/**/**</td>
                    <td>***********</td>
                </tr>

                <tr class="">
                    <td class="time">**/**/**</td>
                    <td>***********</td>
                </tr>

                <tr class="odd">
                    <td class="time">**/**/**</td>
                    <td>***********</td>
                </tr>

                <tr class="">
                    <td class="time">**/**/**</td>
                    <td>***********</td>
                </tr>

                <tr class="odd">
                    <td class="time">**/**/**</td>
                    <td>***********</td>
                </tr>

                <tr class="">
                    <td class="time">**/**/**</td>
                    <td>***********</td>
                </tr>

            </tbody>
        </table> 
    </div>  

现在我要做的是将信息插入数据库。我知道如何轻松做到这一点,但我对如何制作它感到困惑,因此它在同一行中插入了 td 时间和没有类/id 的 td。
所以基本上我想要:

                    <td class="time">**/**/**</td>
                    <td>***********</td>

在一行中,基本上&lt;tr class=""&gt; 在它自己的 MYSQL 行中。
抱歉,如果我第一次描述的不够充分,这很难解释。
如果您不明白,请告诉我。只是想让这成为可能。

谢谢,
游戏人

【问题讨论】:

    标签: php html mysql


    【解决方案1】:

    请使用PHP Simple HTML DOMSymfony DOM Crawler(带有Symfony CSS Selector)之类的东西来解析网站,而不是正则表达式。

    使用 Symfony DOM Crawler,查看这个工作示例:

    <?php
    
    include 'vendor/autoload.php';
    
    use Symfony\Component\DomCrawler\Crawler;
    
    $crawler = new Crawler('<div class="data-container collectionLog">
        <h3>Collection Log</h3>
        <div id="lcLoanPerf2">
    
            <table id="lcLoanPerfTable2" class="plain-table">
                <tbody>
    
                    <tr class="odd">
                        <td class="time">**/**/**</td>
                        <td>***********</td>
                    </tr>
    
                    <tr class="">
                        <td class="time">**/**/**</td>
                        <td>***********</td>
                    </tr>
    
                    <tr class="odd">
                        <td class="time">**/**/**</td>
                        <td>***********</td>
                    </tr>
    
                    <tr class="">
                        <td class="time">**/**/**</td>
                        <td>***********</td>
                    </tr>
    
                    <tr class="odd">
                        <td class="time">**/**/**</td>
                        <td>***********</td>
                    </tr>
    
                    <tr class="">
                        <td class="time">**/**/**</td>
                        <td>***********</td>
                    </tr>
    
                    <tr class="odd">
                        <td class="time">**/**/**</td>
                        <td>***********</td>
                    </tr>
    
                    <tr class="">
                        <td class="time">**/**/**</td>
                        <td>***********</td>
                    </tr>
    
                    <tr class="odd">
                        <td class="time">**/**/**</td>
                        <td>***********</td>
                    </tr>
    
                    <tr class="">
                        <td class="time">**/**/**</td>
                        <td>***********</td>
                    </tr>
    
                    <tr class="odd">
                        <td class="time">**/**/**</td>
                        <td>***********</td>
                    </tr>
    
                    <tr class="">
                        <td class="time">**/**/**</td>
                        <td>***********</td>
                    </tr>
    
                    <tr class="odd">
                        <td class="time">**/**/**</td>
                        <td>***********</td>
                    </tr>
    
                    <tr class="">
                        <td class="time">**/**/**</td>
                        <td>***********</td>
                    </tr>
    
                    <tr class="odd">
                        <td class="time">**/**/**</td>
                        <td>***********</td>
                    </tr>
    
                    <tr class="">
                        <td class="time">**/**/**</td>
                        <td>***********</td>
                    </tr>
    
                    <tr class="odd">
                        <td class="time">**/**/**</td>
                        <td>***********</td>
                    </tr>
    
                    <tr class="">
                        <td class="time">**/**/**</td>
                        <td>***********</td>
                    </tr>
    
                    <tr class="odd">
                        <td class="time">**/**/**</td>
                        <td>***********</td>
                    </tr>
    
                    <tr class="">
                        <td class="time">**/**/**</td>
                        <td>***********</td>
                    </tr>
    
                    <tr class="odd">
                        <td class="time">**/**/**</td>
                        <td>***********</td>
                    </tr>
    
                    <tr class="">
                        <td class="time">**/**/**</td>
                        <td>***********</td>
                    </tr>
    
                    <tr class="odd">
                        <td class="time">**/**/**</td>
                        <td>***********</td>
                    </tr>
    
                    <tr class="">
                        <td class="time">**/**/**</td>
                        <td>***********</td>
                    </tr>
    
                </tbody>
            </table>
        </div>');
    
    $tfList = $crawler->filter('#lcLoanPerfTable2 tr td');
    
    foreach($tfList AS $list) {
        foreach($list->childNodes as $node) {
            var_dump($node->wholeText);
        }
    }
    

    这样你就有了td-list 和foreach 中的(在本例中是两个)td 元素。您可以将它们保存到数据库中,也可以随心所欲地使用它。

    【讨论】:

      猜你喜欢
      • 2011-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-14
      • 2013-03-27
      • 1970-01-01
      相关资源
      最近更新 更多