首页 > 解决方案 > XML 只存储 79 个条目?- PHP网络爬虫

问题描述

我一直在玩我为我的一个小项目构建的一个简单的 php webscraper。刮板通过网站上的作业帖子运行,并将所有相关信息存储在嵌套数组中,然后我将其存储在 xml 文件中。然而,问题是每当我运行代码时,它只存储前 79 个职位,我似乎找不到问题(我知道我正在搜索的类有更多职位)。

如果有人能指出我正确的方向或自己尝试过类似的事情,那么获得解决方案会很好:)

我正在通过本地运行服务器。MAMP。不知道会不会是这个问题?

  include('simple_html_dom.php');
    $Pages = array();
    $JobOffers = array();

$html = file_get_html("https://www.jobindex.dk/jobsoegning?q=studiejob");   
$NumPage = $html->find('li.page-item');

foreach ($NumPage as $page){
    
    $res = preg_replace("/[^0-9]/", "", $page->plaintext);
    $PageNumber = $res.trim(); 
    $PageNumToInt = (int)$PageNumber;
    array_push($Pages, $PageNumToInt);
    }
    
$HighestValue = max($Pages);


for($i = 8; $i <= $HighestValue; $i++){
    
    $Newhtml = file_get_html("https://www.jobindex.dk/jobsoegning?page=".$i."&q=studiejob");
    $items = $Newhtml->find('div.PaidJob');
    

    
    foreach ($items as $job){
        
        $RareTitle = $job->find("a", 0)->plaintext;
        $CommonTitle = $job->find("a", 1)->plaintext; 
        $Virksomhed = $job->find("a", 2)->plaintext;
        $LinkHref = $job->find("a", 1)->href;
        $DisP1 = $job->find("p", 1)->plaintext; 
        $DisP2 = $job->find("p", 2)->plaintext; 
        $Dis = $DisP1 . " " . $DisP2;
        $date = date("d/m/Y");
        $prefix = "JoIn";
        
        echo $RareTitle; 
        echo $CommonTitle; 
        echo $Virksomhed; 
        echo $LinkHref; 
        echo $Dis; 
        echo $date; 
        echo $prefix; 
    
        $SingleJob = array($CommonTitle, $RareTitle, $Virksomhed, $Dis, $LinkHref, $date, $prefix);
        array_push($JobOffers,$SingleJob);

}}

此代码用于将工作机会保存在本地 xml 文件中:

function SaveJobs($JobInfo){

if(file_exists("./xml/JobOffers.xml")){
 $i = 1; 
    foreach ($JobInfo as $jobs){
            $xml = new DOMDocument("1.0", "utf-8"); 
            $xml->load("./xml/JobOffers.xml");
            
            // Creating textnode with line break 
            $textNode = $xml->createTextNode("\n"); 
            
            // root Element
            $root = $xml->getElementsByTagName("job")->item(0);
            $root->appendChild($textNode);
            
            // Create Singlejob Element
            $SingleJob = $xml->createElement("Jobitem");
            
            //ID Attribute 
            $DomAtt1 = $xml->createAttribute('ID'); 
            $DomAtt1->value = $i.$jobs[6];
            $SingleJob->appendChild($DomAtt1); 
            
            //Date Attribute
            $DomAtt2 = $xml->createAttribute('Date'); 
            $DomAtt2->value = $jobs[5];
            $SingleJob->appendChild($DomAtt2); 
            
            
            // Creating Elements 
            $TitleElement = $xml->createElement("Title", $jobs[0]);
            $SecTitle = $xml->createElement("SecTitle", $jobs[1]); 
            $Firm = $xml->createElement("Firm", $jobs[2]); 
            $dis = $xml->createElement("Description", $jobs[3]); 
            $Linkhref = $xml->createElement("Linkhref", $jobs[4]); 
            
             
                    
            // Append data to SingleJob Element
            $SingleJob->appendChild($TitleElement);
            $SingleJob->appendChild($SecTitle);
            $SingleJob->appendChild($Firm);
            $SingleJob->appendChild($dis);
            $SingleJob->appendChild($Linkhref);
            
            
            // Append Singlejob to root and save the changes
            $root->appendChild($SingleJob);
            $xml->save("./xml/JobOffers.xml");
    
            $i++; 
        } 
        
    
}}

标签: phpxml

解决方案


推荐阅读