php - 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++;
}
}}
解决方案
推荐阅读
- r - R在数据框中按组捕获回归斜率
- android - JobService 不会在 android 9 中重新安排
- php - Stripe:即使 customer_id 不为空,也会创建新客户?
- javascript - 寻找 javascript 库来保存和恢复 html 表单,包括从 php 的 $_POST 恢复
- c# - 使用可变参数使此方法通用
- angular - Angular 7 ngBuild:require(filename) 不能在 forRoot() 方法中传递
- python - 使用 selenium 和 python 将鼠标移动到网页区域之外
- javascript - 是否可以从工作人员那里调用 SubtleCrypto 方法?
- c# - Xamarin 形成 Fomed Label 跨度仅在绑定解决后可见
- c - 如何在openmp中并行化while循环 - 共轭梯度