-1

Je suis en train de gratter cette URL car c'est mon projet de dernière année, mais ce code seulement scrap 1 page de requête recherchée Je veux la pagination (comme 1,2,3,4,5) à la fin s'il vous plaît aiderPHP web scraping pagination HTMLDOM

J'ai implémenté un script de récupération de données qui récupère des données en utilisant CURL.

Mais ce fetch n'enregistre qu'une seule page mais je veux toutes les données car sur cette page la pagination est là.

<form action="" method="post" class="form-horizontal" id="home-search"> 
<input type="text" name="keyword" id="keyword"> 
<input type="submit">   
</form> 
<?php 
if(isset($_POST['keyword'])){ 
$keyword = urlencode($_POST['keyword']); 
ini_set('display_errors', 1); 

    ini_set('max_execution_time', 300); 
$html = file_get_contents('https://www.bestjobs.co.za/jobs/?q='.$keyword); 
//echo $html; 
$indeedDotPk = array(); 
//$html = file_get_contents($result); 
libxml_use_internal_errors(true); 
$doc = new DOMDocument; 
$doc->loadHTML($html); 
$xpath = new DOMXpath($doc); 

$node = $xpath->query('//div[@class="paginas"]/ul/li/a/@href'); 
$total_pages = 0; 
$start = 0; 
$job_title_index = 0; 
$job_link_index = 0; 
$job_description_index = 0; 
$job_experience_index = 0; 

foreach ($node as $key => $value) { 
    $total_pages++; 
    // echo $value->textContent; 
    // echo "<br>"; 
    // echo "<br>"; 
    // echo "<br>"; 
} 

for ($i=0; $i < $total_pages; $i++) { 
    ini_set('max_execution_time', 300); 
    $html = file_get_contents('https://www.bestjobs.co.za/jobs/?q='.$keyword.'&start='.$start); 
    libxml_use_internal_errors(true); 
    $doc = new DOMDocument; 
    $doc->loadHTML($html); 
    $xpath = new DOMXpath($doc); 

    // Job Description 
    $node = $xpath->query('//a[@class="js-o-link"]'); 
    foreach ($node as $key => $value) { 
     if(is_string($value->textContent)){ 
      $indeedDotPk[$job_description_index++]['job_description'] = $value->textContent; 
     } 
    } 
    // Job Description 

    $start = $start + 10; 
} 

    foreach ($indeedDotPk as $key => $value) { 
    if(!empty($value['job_description'])){ 

?> 

<table border="1"> 
<tr > 
    <td> 

    </td> 

    <td> 

    </td> 

    <td> 

    </td> 

    <td> 
     <?php echo $value['job_description']?> 
    </td> 
</tr> 

Quelqu'un at-il une idée de comment je peux définir la pagination à la fin comme 1,2,3,4,5?

Si quelqu'un a des suggestions alors s'il vous plaît aidez-moi.

Merci ...

Répondre

0

passer le paramètre d'échange dans l'URL comme celui-ci

https://www.bestjobs.co.za/jobs/?q=sales&p=2 

tout envelopper dans une fonction et en utilisant pour la boucle passer le paramètre d'appel à la fonction comme celui-ci

function webScrap($p){ 
//scrapping code 
} 

for($i=0;$i>=100;$i++){ 
webScrap($i); 
} 
+0

je ne l'ai pas obtenu Nitin Monsieur fondamentalement je suis étudiant et begineer pouvez-vous modifier mon code ci-dessus pour me montrer comment je vais faire que ce serait une grande aide –