Skip to content
This repository was archived by the owner on Sep 24, 2018. It is now read-only.

Commit a01c942

Browse files
committed
Merge pull request #3 from JulienMalige/master
Fix images recovery
2 parents 0849a42 + cbc1841 commit a01c942

File tree

5 files changed

+1319
-1410
lines changed

5 files changed

+1319
-1410
lines changed

src/Crawler/AdCrawler.php

+10-15
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,11 @@ public function getThumbs(Crawler $node = null)
3535

3636
$pictures = [];
3737

38-
$node
39-
->filter('#thumbs_carousel > a > span')
40-
->each(function (Crawler $link, $i) use (&$pictures) {
41-
$pictures[$i] = preg_replace(
42-
"/.*url\('(.*)'\);/",
43-
'$1',
44-
$link->attr('style')
45-
);
46-
});
38+
foreach ($this->getPictures() as $k => $v) {
39+
$v = preg_replace('/images/', 'thumbs', $v);
40+
41+
$pictures[$k] = $v;
42+
}
4743

4844
return $pictures;
4945
}
@@ -62,12 +58,11 @@ public function getPictures(Crawler $node = null)
6258

6359
$pictures = [];
6460

65-
foreach ($this->getThumbs() as $k => $v) {
66-
$k = preg_replace('/thumb/', 'picture', $k);
67-
$v = preg_replace('/thumbs/', 'images', $v);
68-
69-
$pictures[$k] = $v;
70-
}
61+
$node
62+
->filter('.lbcImages > meta[itemprop="image"]')
63+
->each(function (Crawler $link, $i) use (&$pictures) {
64+
$pictures[$i] = $link->attr('content');
65+
});
7166

7267
return $pictures;
7368
}

tests/Lbc/Crawler/AdCrawlerTest.php

+28-31
Original file line numberDiff line numberDiff line change
@@ -12,49 +12,46 @@ class AdCrawlerTest extends \PHPUnit_Framework_TestCase
1212

1313
public function setUp()
1414
{
15-
$this->url = 'http://www.leboncoin.fr/ventes_immobilieres/745837877.htm';
15+
$this->url = 'http://www.leboncoin.fr/ventes_immobilieres/897011669.htm?ca=3_s';
1616

17-
$this->adcontent = file_get_contents(dirname(dirname(__DIR__)) . '/content/ad_753398357.html');
17+
$this->adcontent = file_get_contents(dirname(dirname(__DIR__)) . '/content/ad_897011669.html');
1818

1919
$this->adCrawler = new AdCrawler($this->adcontent);
2020

2121
$this->adInfo = [
2222
'thumbs' => [
23-
'0' => 'http://193.164.197.50/thumbs/057/0577f71deaf048e04e74827ee8a1af99fc3bf6e0.jpg',
24-
'1' => 'http://193.164.196.50/thumbs/ac2/ac21ba0041877475c5887923f0c886f22d7f2f31.jpg',
25-
'2' => 'http://193.164.196.30/thumbs/33d/33dcf604ed182701e6b88fea4766a1386caa8a95.jpg',
23+
'0' => 'http://img5.leboncoin.fr/thumbs/cd2/cd201a9f3952008e989050029bd22bc092ff0d1b.jpg',
24+
'1' => 'http://img2.leboncoin.fr/thumbs/94c/94c768cf258daea91bf3d40c55cf309088c4fd3f.jpg',
25+
'2' => 'http://img5.leboncoin.fr/thumbs/e13/e13d7d26816fe5d29d35c998a3905ad4b8e18919.jpg',
2626
],
2727
'pictures' => [
28-
'0' => 'http://193.164.197.50/images/057/0577f71deaf048e04e74827ee8a1af99fc3bf6e0.jpg',
29-
'1' => 'http://193.164.196.50/images/ac2/ac21ba0041877475c5887923f0c886f22d7f2f31.jpg',
30-
'2' => 'http://193.164.196.30/images/33d/33dcf604ed182701e6b88fea4766a1386caa8a95.jpg',
28+
'0' => 'http://img5.leboncoin.fr/images/cd2/cd201a9f3952008e989050029bd22bc092ff0d1b.jpg',
29+
'1' => 'http://img2.leboncoin.fr/images/94c/94c768cf258daea91bf3d40c55cf309088c4fd3f.jpg',
30+
'2' => 'http://img5.leboncoin.fr/images/e13/e13d7d26816fe5d29d35c998a3905ad4b8e18919.jpg',
3131
],
32-
'title' => 'Maison 130 m² Fontaine Etoupefour',
33-
'price' => 240000,
34-
'city' => 'Fontaine-Etoupefour',
35-
'cp' => '14790',
32+
'title' => 'Appartement F3 de 71m2,Clermont-fd hyper centre',
33+
'price' => 118000,
34+
'city' => 'Clermont-Ferrand',
35+
'cp' => '63000',
3636
'criterias' => [
37-
'type_de_bien' => 'Maison',
38-
'pieces' => '5',
39-
'surface' => '130 m2',
40-
'ges' => 'Vierge',
41-
'classe_energie' => 'Vierge',
37+
'type_de_bien' => 'Appartement',
38+
'pieces' => '3',
39+
'surface' => '71 m2',
40+
'ges' => 'E (de 36 à 55)',
41+
'classe_energie' => 'D (de 151 à 230)',
4242
],
4343
'description' =>
44-
"AGENCES S'ABSTENIR IMPÉRATIVEMENT . MERCI de respecter\n" .
45-
"Maison 130 m² environ, Fontaine Etoupefour.\n" .
46-
"RDC: cuisine ouverte sur salle-salon avec surface totale de " .
47-
"50 m² ; le tout en parquet chêne massif. Deux Chambres (13 " .
48-
"m² et 11.5 m²), SDB 8 m² avec douche et baignoire. WC séparés " .
49-
"Une pièce buanderie 9 m² (placard portes coulissantes)\n" .
50-
"ETAGE: Deux chambres de 13 m² chacune sous toiture, petite " .
51-
"salle d'eau lavabo et wc. Grenier à aménager de 35 m². " .
52-
"Chauffage gaz, chaudière à condensation de 2008 + conduit de " .
53-
"cheminée existant non utilisé (possible installation de " .
54-
"cheminée ou poil à bois)\n" .
55-
"Portail alu motorisé Jardin arboré de 780 m² environ avec " .
56-
"un abris de jardin, entouré de haies sans aucun vis-à-vis " .
57-
"avec 2 terrasses en bois à l'avant et à l'arrière de la maison."
44+
"Quartier galaxie,rue fontgiève à 5 minutes à pied ".
45+
"du centre-ville, proche de toutes ".
46+
"commodités,bus,supermarche,école,la banque,la ".
47+
"poste...\nParticulier à vendre appartement F3 de 71 m2 très ".
48+
"lumineux,sejour double exposition(sud ".
49+
"ouest),cuisine equipée,2 chambres,Salle de bain, ".
50+
"WC séparé et de nombreux rangement.Fenêtres double ".
51+
"vitrage,volets roulants électrique,très bon etat ".
52+
"general,1 place de parking couverte et sécurisée ".
53+
"en rez de chaussée,en face de la gardienne.\nPRIX: 118000 Euros\nTEL: 0671014891 Email: [email protected]"
54+
5855
];
5956
}
6057

tests/Lbc/GetFromTest.php

+13-13
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public function testGetTheDetailedAdInTheSearchResult()
6565
public function testGetAdData()
6666
{
6767
$response = $this->getResponse(
68-
dirname(__DIR__) . '/content/ad_753398357.html'
68+
dirname(__DIR__) . '/content/ad_897011669.html'
6969
);
7070

7171
$mock = new Mock();
@@ -76,23 +76,23 @@ public function testGetAdData()
7676
$getFrom->getHttpClient()->getEmitter()->attach($mock);
7777
$getFrom->getHttpClient()->getEmitter()->attach($mock);
7878

79-
$dataByUrl = $getFrom->ad('http://www.leboncoin.fr/ventes_immobilieres/745837877.htm');
80-
$dataById = $getFrom->ad('745837877', 'ventes_immobilieres');
79+
$dataByUrl = $getFrom->ad('http://www.leboncoin.fr/ventes_immobilieres/897011669.htm?ca=3_s');
80+
$dataById = $getFrom->ad('897011669', 'ventes_immobilieres');
8181

8282
$this->assertEquals($dataById, $dataByUrl);
83-
$this->assertEquals('745837877', $dataById['id']);
83+
$this->assertEquals('897011669', $dataById['id']);
8484
$this->assertEquals('ventes_immobilieres', $dataById['category']);
8585
$this->assertEquals(3, count($dataById['thumbs']));
8686
$this->assertEquals(3, count($dataById['pictures']));
87-
$this->assertEquals('Maison 130 m² Fontaine Etoupefour', $dataById['title']);
88-
$this->assertEquals('14790', $dataById['cp']);
89-
$this->assertEquals('Fontaine-Etoupefour', $dataById['city']);
90-
$this->assertEquals(240000, $dataById['price']);
91-
$this->assertEquals('Maison', $dataById['criterias']['type_de_bien']);
92-
$this->assertEquals('5', $dataById['criterias']['pieces']);
93-
$this->assertEquals('130 m2', $dataById['criterias']['surface']);
94-
$this->assertEquals('Vierge', $dataById['criterias']['ges']);
95-
$this->assertEquals('Vierge', $dataById['criterias']['classe_energie']);
87+
$this->assertEquals('Appartement F3 de 71m2,Clermont-fd hyper centre', $dataById['title']);
88+
$this->assertEquals('63000', $dataById['cp']);
89+
$this->assertEquals('Clermont-Ferrand', $dataById['city']);
90+
$this->assertEquals(118000, $dataById['price']);
91+
$this->assertEquals('Appartement', $dataById['criterias']['type_de_bien']);
92+
$this->assertEquals('3', $dataById['criterias']['pieces']);
93+
$this->assertEquals('71 m2', $dataById['criterias']['surface']);
94+
$this->assertEquals('E (de 36 à 55)', $dataById['criterias']['ges']);
95+
$this->assertEquals('D (de 151 à 230)', $dataById['criterias']['classe_energie']);
9696
$this->assertNotEmpty($dataById['description']);
9797
}
9898

0 commit comments

Comments
 (0)