pylbc

An (unofficial) python3 wrapper API around leboncoin.


Keywords
api, leboncoin, python, python3
License
Other
Install
pip install pylbc==1.0.3

Documentation

pylbc

Une API Python3 pour LeBonCoin.

SEULEMENT pour la catégorie immobilier pour le moment.

Installation

Requis : python >= 3.0

Avec pip

python3 -m venv venv
source venv/bin/activate
python3 -m pip install pylbc 

Depuis les sources

git clone https://github.com/razaborg/pylbc.git
cd pylbc

Et utilisez le directement ou installez-le avec setuptools :-)

Utilisation

Directement en CLI

curl https://raw.githubusercontent.com/razaborg/pylbc/master/lbcli.py -o lbcli.py
chmod +x lbcli.py
./lbcli.py
usage: lbcli.py [-h] [--coordinates LAT LNG] [--radius RADIUS] --category
                {immobilier,ventes,locations,colocations} --real-estate-type
                {maison,appartement,terrain,parking,autre}
                [--price-range PRICE_RANGE PRICE_RANGE]
                [--square-range SQUARE_RANGE SQUARE_RANGE]
                [--rooms-range ROOMS_RANGE ROOMS_RANGE]
                [--order-by {price,time}] [--sort-order {asc,desc}]
                [--verbose] [-y]
lbcli.py: error: the following arguments are required: --category/-C, --real-estate-type/-T

En tant que librairie

import pylbc

'''
and do your magic here...
using pylbc.Search() and pylbc.SearchResult()
'''

Jettez un oeil aux exemples plus bas ;-)

Documentation

La classe Search()

Cette classe dispose de plusieurs mĂ©thodes permettant de faciliter la construction des requĂȘtes de recherche. Pour le moment, seule la fonctionnalitĂ© de recherche est visĂ©e par cette API, et tout particuliĂšrement la catĂ©gorie "immobilier". A l'avenir, peut-ĂȘtre de nouvelles catĂ©gories/fonctionnalitĂ©s de l'API y seront ajoutĂ©es.

Plusieurs fonctionnaliéts de recherche sont proposés par le site leboncoin.

Parmi lesquelles :

  • dĂ©finir une catĂ©gorie : la mĂ©thode set_category()
  • dĂ©finir des mots-clĂ©s de recherche : la mĂ©thode set_query()
  • dĂ©finir un fourchette de prix : la mĂ©thode set_price()
  • dĂ©finir une fourchette de surface : la mĂ©thode set_square()
  • dĂ©finir une fourchette de piĂšces : la mĂ©thode set_rooms()
  • dĂ©finir un/des type de bien : la mĂ©thode set_real_estate_type()
  • dĂ©finir un/des dĂ©partements gĂ©ographiques : la mĂ©thode set_departments()
  • dĂ©finir une zone gĂ©ographique et un rayon : la mĂ©thode set_coordinates()
  • dĂ©finir une ville de recherche : la mĂ©thode add_city() (non compatible avec les autres options de recherche gĂ©ographique)

Une fois la recherche paramĂ©trĂ©e, la requete peut ĂȘtre lancĂ©e avec :

  • la mĂ©thode request_infos() pour ne rĂ©cupĂ©rer que les mĂ©tadonnĂ©es des rĂ©sultats
  • la mĂ©thode request_once() pour charger une seule page de rĂ©sultats
  • la mĂ©thode iter_results() pour charger l'ensemble des rĂ©sultats Ă  travers un itĂ©rateur

La classe SearchResult()

Cette classe est un "wrapper" permettant de manipuler plus facilement les résultats renvoyés par l'API. Elle dispose ainsi de méthodes et d'attributs spécifiques en ce sens.

Actuellement ce type d'objet ne peut ĂȘtre gĂ©nĂ©rĂ© qu'automatiquement Ă  partir de la classe Search().

Les méthodes "custom"

  • is_recent() renvoie un boolĂ©en
  • is_appartment() renvoie un boolĂ©en
  • is_house() renvoie un boolĂ©en
  • price_per_square() renvoie le prix au m2 du rĂ©sultat

Les attributs

Voici Ă  quoi ressemble un objet de cette classe, avec l'ensemble de ses attributs:

SearchResult(\
 title="Charmante maison en pierre centre-ville", \
 publication_date="2019-06-16", \
 price=510, \
 coordinates=(48.20384, -1.48986), \
 real_estate_type="maison", \
 square=60, \
 url="https://www.leboncoin.fr/locations/xxxxxxxxxxx.htm", \
 thumbnail="https://img6.leboncoin.fr/ad-thumb/xxxxxxxxxxxxxxx.jpg"\
)

Exemples

#!/usr/bin/env python3
import pylbc

lat_paris, lng_paris = 48.864716, 2.349014
radius = 50 # in kilometers

query = pylbc.Search()
query.set_price(mini=500, maxi=900)
query.set_category('locations')
query.set_real_estate_types(['maison'])

# option 1: faire une recherche autour d'un point donné (ici, paris) dans un rayon donné (ici 50kms)
query.set_coordinates(lat=lat_paris, lng=lng_paris, radius=radius)

# option 2 : recherche par départements, ici toute la bretagne :-)
# query.set_departments(['22', '56', '35', '29'])

# affichage de la requete avant envoi
query.show_filters()

# prĂ©-requĂȘte pour rĂ©cupĂ©rer les mĂ©tadonnĂ©es
infos = query.request_infos()
print(infos)
print("A total of %d results is announced by the server." % infos['total'])

# récupération et affichage de tous les résultats
for result in query.iter_results():
    print(result)