【问题标题】:PHP web scraping HTMLDOM paginationPHP网页抓取HTMLDOM分页
【发布时间】:2017-04-22 07:40:28
【问题描述】:

我正在抓取此网址,因为这是我的最后一年项目,但此代码仅抓取 1 页搜索查询我希望最后分页(如 1、2、3、4、5)请帮助

我已经实现了一个使用 CURL 获取数据的数据抓取脚本。

但是那只获取记录只有一页,但我想要所有数据,因为在那一页上有分页。

<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>

有谁知道我如何设置分页最后像 1,2,3,4,5 ?

如果有人有任何建议,请帮助我。

谢谢...

【问题讨论】:

    标签: php web-scraping pagination screen-scraping simple-html-dom


    【解决方案1】:

    像这样在url中传递分页参数

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

    将所有内容包装在一个函数中,并使用 for 循环将分页参数传递给这样的函数

    function webScrape($p){
    //scraping code
    }
    
    for($i=0;$i>=100;$i++){
    webScrape($i);
    }
    

    【讨论】:

    • 我没听懂 Nitin Sir 基本上我是学生和初学者你能修改我上面的代码来告诉我我将如何做这将是一个很大的帮助
    猜你喜欢
    • 1970-01-01
    • 2020-06-18
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    相关资源
    最近更新 更多