-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAvitoParser.php
108 lines (102 loc) · 3.7 KB
/
AvitoParser.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php
require_once 'simple_html_dom.php';
class AvitoParser
{
private $_adsArr;
private $_url;
private $_urn;
private $_uri;
public function parseAvitoPages2()
{
$uri = $this->uriBuilder();
$html = file_get_html($uri);
foreach ($html->find('div[class=item item_table clearfix js-catalog-item-enum]') as $div) {
$itemValue = $div->find('.item_table-header .item-description-title-link');
$ad_name = html_entity_decode(trim($itemValue[0]->plaintext));
$itemValue = $div->find('.item_table-header .about text');
$ad_price = html_entity_decode(preg_replace("/[^0-9]/", '', $itemValue[0]->plaintext));
$itemValue = $div->find('.address');
$ad_loc = html_entity_decode(trim($itemValue[0]->plaintext));
$itemValue = $div->find('.data .c-2');
$ad_dateTime = $this->dateDecode($itemValue[0]->plaintext);
$itemValue = $div->find('.item-description-title-link');
$ad_src = html_entity_decode(trim($itemValue[0]->href));
global $_url;
$ad_src = $_url.$ad_src;
$this->_adsArr[] = array($ad_name, $ad_price, $ad_loc, $ad_dateTime, $ad_src);
}
$html->clear();
unset($html);
return $this->_adsArr;
}
public function uriBuilder()
{
$url = "https://www.avito.ru";
$urn = "/moskva/kvartiry/sdam";
$param = "?s=104";
global $_uri, $_url, $_urn;
list($_url, $_urn, $_uri) = array($url, $urn, $url.$urn.$param);
return ($url . $urn . $param);
}
public function dateDecode($str)
{
$dateTime = explode(" ", trim($str));
if (!preg_match('\'[0-9]\'', $dateTime[0], $matches)) :
switch ($dateTime[0]) {
case "Сегодня":
$date = date('y-m-d');
break;
case "Вчера":
$date = time()-60*60*24;
$date = date('y-m-d', $date);
break;
}
else:
list($dataD, $dataMY) = explode(" ", $dateTime[0]);
if (!(int)($dataD/10))
$dataD = '0'.$dataD;
switch ($dataMY) {
case "января":
$date = '18-01-'.$dataD;
break;
case "февраля":
$date = '18-02-'.$dataD;
break;
case "марта":
$date = '18-03-'.$dataD;
break;
case "апреля":
$date = '18-04-'.$dataD;
break;
case "мая":
$date = '18-05-'.$dataD;
break;
case "июня":
$date = '18-06-'.$dataD;
break;
case "июля":
$date = '18-07-'.$dataD;
break;
case "августа":
$date = '18-08-'.$dataD;
break;
case "сентября":
$date = '18-09-'.$dataD;
break;
case "октября":
$date = '18-10-'.$dataD;
break;
case "ноября":
$date = '18-11-'.$dataD;
break;
case "декабря":
$date = '18-12-'.$dataD;
break;
default:
$date = '01.01.01';
}
endif;
$time = $dateTime[1].':00';
return $date.' '.$time;
}
}