query('//div[@id="pageSelection"]/select');
if($searchPages->length == 0) {
$pages=1;
} else {
$pages = $searchPages->item(0)->childNodes->length;
}
// create a dynamic url in which the current page number can be set in
$queryurldyn = preg_replace("/\/Suche\//", "/Suche/P-%page%/", $queryurl);
// loop through available pages
for ($page = 1; $page <= $pages; $page++) {
$queryurlcur = str_replace("%page%", $page, $queryurldyn);
echo "Current search page: " . $queryurlcur . "
\n";
$site = xsite($queryurlcur); // load and transform URL of current page
// get all links to expose pages
$searchResult = $site->query('//a[@class="result-list-entry__brand-title-container"]/@href');
// loop through web search results
foreach($searchResult as $result){
global $data;
$new = "y"; // is the search entry new?
// extract ID of link
preg_match("/\d+$/",$result->textContent, $matches);
$id = $matches[0];
$id = (int)$id; // convert to int value
$total = count($data);
for ($row = 0; $row < $total; $row++) {
if ($id === $data[$row]['id']) {
$new = "n"; // entry isn't new anymore
}
}
if ($new === "y") { // entry is new
// load and transform expose URL
$site = xsite("https://www.immobilienscout24.de/expose/" . $id);
// description
$searchResult = $site->query('//h1[@id="expose-title"]');
$desc = trim($searchResult->item(0)->nodeValue);
$desc = mb_convert_encoding($desc, 'UTF-8', 'UTF-8'); // remove/replace invalid characters
$descs = substr($desc, 0, 15);
$descs = mb_convert_encoding($descs, 'UTF-8', 'UTF-8');
// flat available from
$searchResult = $site->query('//dd[@class="is24qa-bezugsfrei-ab grid-item three-fifths"]');
$bezug = trim($searchResult->item(0)->nodeValue);
// warm rent
$searchResult = $site->query('//dd[@class="is24qa-gesamtmiete grid-item three-fifths font-bold"]');
$mietew = trim($searchResult->item(0)->nodeValue);
// cold rent
$searchResult = $site->query('//dd[@class="is24qa-kaltmiete grid-item three-fifths"]');
$mietek = trim($searchResult->item(0)->nodeValue);
// rooms
$searchResult = $site->query('//dd[@class="is24qa-zimmer grid-item three-fifths"]');
$zimmer = trim($searchResult->item(0)->nodeValue);
// size
$searchResult = $site->query('//dd[@class="is24qa-wohnflaeche-ca grid-item three-fifths"]');
$qm = trim($searchResult->item(0)->nodeValue);
// location
$searchResult = $site->query('//div[@class="address-block"]');
$ort = trim($searchResult->item(0)->nodeValue);
$ort = str_replace("(zur Karte) ", "", $ort);
$ort = str_replace("Die vollständige Adresse der Immobilie erhalten Sie vom Anbieter.", "", $ort);
// append new array entry
$data[] = array("id" => $id,
"date" => date('d.m. H:i'),
"desc" => $desc,
"descs" => $descs,
"bezug" => $bezug,
"mietew" => $mietew,
"mietek" => $mietek,
"ort" => $ort,
"zimmer" => $zimmer,
"qm" => $qm,
"rating" => 0,
"status" => "NEU",
"note" => "");
// send mail for new item
$mailcontent = "*" . $desc . "* \r\n\r\n" .
"Bezug: " . $bezug . "\r\n" .
"Miete: " . $mietew . "/" . $mietek . "\r\n" .
"Größe: " . $qm . "\r\n" .
"Zimmer: " . $zimmer . "\r\n" .
"Ort: " . $ort . "\r\n" .
"Link: https://www.immobilienscout24.de/expose/" . $id . "\r\n\r\n" .
"Übersicht: https://" . $_SERVER["SERVER_NAME"] . $_SERVER["PHP_SELF"];
mail($config['mail']['to'], "Neues Wohnungsinserat: " . $descs . "...", $mailcontent, "From: " . $config['mail']['from'] . "\r\nMIME-Version: 1.0\r\nContent-Type: text/plain; charset=UTF-8");
echo $id . " is new and has been downloaded.
\n";
} else { // entry is old
echo $id . " already exists.
\n";
}
} // END foreach &searchResult
} // END for loop through pages
echo "
| Datum | Beschreibung | Status | Bezug | Miete warm (kalt) | Zi | Größe | Ort | Notiz | Status ändern |
|---|---|---|---|---|---|---|---|---|---|
| " . $date . " | "; echo "" . $descs . "... | "; echo "" . $status . " | "; echo "" . $bezug . " | "; echo "" . $mietew . " (" . $mietek . ")" . " | "; echo "" . $zimmer . " | "; echo "" . $qm . " | "; echo "" . $ort . " | "; echo ""; ?> "; echo " | "; ?> "; echo " |
Letztes Update:
Gelöschte Inserate einblenden / ausblenden
Suchlink: Klick
"; echo "