Professional Documents
Culture Documents
Require: 'Simple - HTML - Dom - PHP'
Require: 'Simple - HTML - Dom - PHP'
php
// Mexlike Documentation (Spanish): https://mexlike.io/como-hacer-web-
scraping-con-php-simple-html-dom
// Call dependency. Download page:
https://sourceforge.net/projects/simplehtmldom/files/
require 'simple_html_dom.php';
// Create DOM from URL or file
$html = file_get_html('https://www.tripadvisor.com/Hotels-g150810-
Isla_Mujeres_Yucatan_Peninsula-Hotels.html');
// List of hotels
$wrap_hotels = $html->find('div.prw_meta_hsx_responsive_listing');
/**
* @param Array $attr_image Attributes in array
*
* @return Image URL
*/
function get_standar_image_url($attr_image) {
// Return default
$url_image = 'nothing';
// Only for style attibutes
if (isset($attr_image['style'])) {
// Remove background-image:url( & ) from background-
image:url(URL_DE_IMAGEN)
// You can also use regex
$url_image = substr($attr_image['style'], 21, -2);
} else {
// Nothing to do
$url_image = $attr_image['data-lazyurl'];
}
// Return result
return $url_image;
}
// List for Hotels
$list_hotels = array();
// Find all images
foreach($wrap_hotels as $element) {
$hotel = new stdClass();
$hotel->name = $element->find('.property_title', 0)->plaintext;
$hotel->price = $element->find('.price', 0)->plaintext;
$hotel->image_url = get_standar_image_url($element->find('.inner', 0)-
>attr);
$hotel->href = $element->find('.photo-wrapper a', 0)->href;
array_push($list_hotels, $hotel);
}
?>
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Registro de Hoteles de Isla Mujeres</title>
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<style media="screen">
.container {
min-height: 15rem;
position: relative;
}
.img-fluid {
width: 100%;
}
.thumbnail {
position: relative;
width: 100%;
height: 100%;
overflow: hidden;
}
.thumbnail img {
position: absolute;
left: 50%;
top: 50%;
height: 100%;
width: auto;
-webkit-transform: translate(-50%,-50%);
-ms-transform: translate(-50%,-50%);
transform: translate(-50%,-50%);
}
.thumbnail img.portrait {
width: 100%;
height: auto;
}
</style>
</head>
<body>
<nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
<a class="navbar-brand" href="#">Logo</a>
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarsExampleDefault" aria-controls="navbarsExampleDefault"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js
"></script>
<script
src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></sc
ript>
</body>
</html>