From 695d969682087ea9a3b7574ac20c8c70dafcb85b Mon Sep 17 00:00:00 2001 From: Bezleputh Date: Fri, 26 Sep 2014 17:33:26 +0200 Subject: [PATCH] [leboncoin] handle query.type --- modules/leboncoin/browser.py | 7 +++---- modules/leboncoin/module.py | 5 ++++- modules/leboncoin/pages.py | 10 +++------- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/modules/leboncoin/browser.py b/modules/leboncoin/browser.py index 12163551..c9f92151 100644 --- a/modules/leboncoin/browser.py +++ b/modules/leboncoin/browser.py @@ -17,7 +17,6 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . - from weboob.tools.browser2 import PagesBrowser, URL from .pages import CityListPage, HousingListPage, HousingPage @@ -26,8 +25,8 @@ from .pages import CityListPage, HousingListPage, HousingPage class LeboncoinBrowser(PagesBrowser): BASEURL = 'http://www.leboncoin.fr' city = URL('ajax/location_list.html\?city=(?P.*)&zipcode=(?P.*)', CityListPage) - search = URL('ventes_immobilieres/offres/ile_de_france/occasions/\?ps=(?P.*)&pe=(?P.*)&ros=(?P.*)&location=(?P.*)&sqs=(?P.*)&sqe=(?P.*)&ret=(?P.*)', - 'ventes_immobilieres/offres/ile_de_france/occasions/\?.*', + search = URL('(?P.*)/offres/ile_de_france/occasions/\?ps=(?P.*)&pe=(?P.*)&ros=(?P.*)&location=(?P.*)&sqs=(?P.*)&sqe=(?P.*)&ret=(?P.*)', + '(ventes_immobilieres|locations)/offres/ile_de_france/occasions/\?.*', HousingListPage) housing = URL('ventes_immobilieres/(?P<_id>.*).htm', HousingPage) @@ -42,13 +41,13 @@ class LeboncoinBrowser(PagesBrowser): return self.city.go(city=city, zip=zip_code).get_cities() def search_housings(self, type, cities, nb_rooms, area_min, area_max, cost_min, cost_max, ret): - # print type achat ou location return self.search.go(location=cities, ros=nb_rooms, sqs=area_min, sqe=area_max, ps=cost_min, pe=cost_max, + type=type, ret=ret).get_housing_list() def get_housing(self, _id): diff --git a/modules/leboncoin/module.py b/modules/leboncoin/module.py index aaec1f85..f24844c4 100644 --- a/modules/leboncoin/module.py +++ b/modules/leboncoin/module.py @@ -73,7 +73,10 @@ class LeboncoinModule(Module, CapHousing): if len(ret) == 0: return list() - _type = query.TYPE_RENT if query.type is None else query.type + _type = 'ventes_immobilieres' + if query.type == Query.TYPE_RENT: + _type = 'locations' + nb_rooms = '' if not query.nb_rooms else query.nb_rooms area_min = '' if not query.area_min else query.area_min area_max = '' if not query.area_max else query.area_max diff --git a/modules/leboncoin/pages.py b/modules/leboncoin/pages.py index 20097111..2215ec28 100644 --- a/modules/leboncoin/pages.py +++ b/modules/leboncoin/pages.py @@ -50,7 +50,7 @@ class HousingListPage(HTMLPage): class item(ItemElement): klass = Housing - obj_id = Regexp(Link('.'), 'http://www.leboncoin.fr/ventes_immobilieres/(.*).htm') + obj_id = Regexp(Link('.'), 'http://www.leboncoin.fr/(ventes_immobilieres|locations)/(.*).htm', '\\2') obj_title = CleanText('./div[@class="lbc"]/div/div[@class="title"]') obj_cost = CleanDecimal('./div[@class="lbc"]/div/div[@class="price"]', replace_dots=(',', '.'), @@ -115,12 +115,8 @@ class HousingPage(HTMLPage): obj_area = Env('area') def obj_date(self): - sender = CleanText('//div[@class="upload_by"]/a')(self) - _date = CleanText('//div[@class="upload_by"]', - replace=[('- Mise en ligne le ', ''), - (sender, ''), - (u'à', ''), - (u'.', '')])(self) + _date = Regexp(CleanText('//div[@class="upload_by"]', replace=[(u'à', '')]), + '.*- Mise en ligne le (.*).')(self) for fr, en in DATE_TRANSLATE_FR: _date = fr.sub(en, _date)