在PHP

时间:2016-08-30 15:06:08

标签: php html web-scraping

我试图删除法律文本并以相同的顺序回应不同的部分,但使用不同的html标签。

我使用Simple HTML Dom Parser PHP库从法律文本中删除一些文本。但我的foreach循环并没有把章节和文章按正确的顺序排列。我只有第一个标题,然后是所有章节,然后是所有文章......正确的层次结构是:一个标题,后面是一个章节,后面是几篇文章。

你能告诉我出了什么问题吗?

网址文字法(法文):Link

刮板代码:

include('simple_html_dom.php');

    //  We take the url we want to scrape

    $URL = 'https://www.legifrance.gouv.fr/affichTexte.do?cidTexte=JORFTEXT000033011065&dateTexte=20160821';

    //  Curl init
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $URL);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec ($ch);

    curl_close($ch);

    //  We get the html
    $html = new simple_html_dom();
    $html->load($result);

    foreach($html->find('ul > li') as $key=>$title) {
        $item['title'] = $title->find('div.titreSection', 0)  ->plaintext;
        if(preg_match("/^Titre/",$item['title'])) {
            $resultat[] = "<h1>".$item['title']."</h1>";
        }
        if(preg_match("/^Chapitre/",$item['title'])) {
            $resultat[] = "<h2>".$item['title']."</h2>";
        }
    }

    // Find all article blocks
    foreach($html->find('div.article') as $key=>$ele) {
        $item['article-title'] =  $ele->find('div.titreArt', 0)  ->plaintext;
        $item['article-body'] =  $ele->find('div.corpsArt', 0)  ->plaintext;
        $item['article-body-plain'] =  $ele->find('div > p', 0) ->plaintext;    
            $resultat[] = "<h3 id='article-title".$key."'>".$item['article-title']."</h3>";
            $resultat[] = "<h4 id='article-body".$key."'>".$item['article-body']."</h4>";
            $resultat[] = "<h5 id='article-body-plain".$key."'>".$item['article-body-plain']."</h5>";
    } // end foreach articles
     include 'vue_scrap.php';
?>

查看:

<!DOCTYPE html>
<html lang="fr">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Scraper Loi</title>
  </head>
<body>
    <section>
        <h2>Résultats :</h2>
<?php
    foreach ($resultat as $result){
        echo $result;
    }
?>      
    </section>
    <footer>
    </footer>
</body>
</html>

这是我从现在开始得到的:

Titre Ier : DISPOSITIONS RELATIVES AU STATUT DE LA MAGISTRATURE
Chapitre Ier : Dispositions relatives à la composition du corps judiciaire

Chapitre II : Dispositions relatives au recrutement et à la formation professionnelle
Chapitre III : Dispositions relatives aux conditions de nomination
Chapitre IV : Dispositions relatives aux droits et obligations des magistrats
Chapitre V : Dispositions relatives aux autres modalités de recrutement des magistrats
Titre II : DISPOSITIONS RELATIVES AU CONSEIL SUPÉRIEUR DE LA MAGISTRATURE
Titre III : DISPOSITIONS DIVERSES ET TRANSITOIRES
Article 1

A modifié les dispositions suivantes :

Article 2

A modifié les dispositions suivantes :

Article 3

A modifié les dispositions suivantes :

Article 4

A modifié les dispositions suivantes :

Article 5

A modifié les dispositions suivantes :

Article 6

A modifié les dispositions suivantes :

Article 7

A modifié les dispositions suivantes :

Article 8

A modifié les dispositions suivantes :

Article 9

A modifié les dispositions suivantes :

Article 10

A modifié les dispositions suivantes :

...

感谢您的帮助。

0 个答案:

没有答案