[indeed] adapt to browser2

This commit is contained in:
Bezleputh 2014-04-14 13:52:34 +02:00
commit b9260c7bc0
4 changed files with 82 additions and 134 deletions

View file

@ -17,42 +17,31 @@
# You should have received a copy of the GNU Affero General Public License
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
from weboob.tools.browser import BaseBrowser
from weboob.tools.browser.decorators import id2url
from weboob.tools.browser2 import PagesBrowser, URL
from .pages import SearchPage, AdvertPage
from .job import IndeedJobAdvert
__all__ = ['IndeedBrowser']
class IndeedBrowser(BaseBrowser):
PROTOCOL = 'http'
DOMAIN = 'www.indeed.fr'
ENCODING = 'UTF-8'
PAGES = {
'%s://%s/Emplois-(.*?)' % (PROTOCOL, DOMAIN): SearchPage,
'%s://%s/emplois(.*?)' % (PROTOCOL, DOMAIN): SearchPage,
'%s://%s/cmp/(.*?)' % (PROTOCOL, DOMAIN): AdvertPage,
'%s://%s/voir-emploi\?(.*?)' % (PROTOCOL, DOMAIN): AdvertPage,
}
class IndeedBrowser(PagesBrowser):
def search_job(self, pattern=None, metier=None, place=None, contrat=None):
self.location('http://www.indeed.fr/emplois?as_and=%s&limit=50&sort=date&st=employer&sr=directhire'
% pattern.replace(' ', '+'))
assert self.is_on_page(SearchPage)
BASEURL = 'http://www.indeed.fr'
search_page = URL('/emplois(?P<parameters>.*)', SearchPage)
advert_page = URL('/cmp/(?P<company>.*)/jobs/(?P<title>.*)-(?P<nb>.*)', AdvertPage)
def search_job(self, metier='', contrat='', limit_date='', radius='', place=''):
params = '?as_ttl=%s&limit=10&sort=date&st=employer&sr=directhire&jt=%s&fromage=%s&radius=%s'\
% (metier.replace(' ', '+'), contrat, limit_date, radius)
if place:
params = '%s&l=%s' % (params, place)
self.search_page.go(parameters=params)
assert self.search_page.is_here(parameters=params)
return self.page.iter_job_adverts()
def advanced_search_job(self, metier=None, contrat=None, limit_date=None, radius=None, place=None):
self.location(
'http://www.indeed.fr/emplois?as_ttl=%s&limit=50&sort=date&st=employer&sr=directhire&jt=%s&fromage=%s&radius=%s&l=%s' % (metier.replace(' ', '+'), contrat, limit_date, radius, place))
assert self.is_on_page(SearchPage)
return self.page.iter_job_adverts()
@id2url(IndeedJobAdvert.id2url)
def get_job_advert(self, url, advert):
self.location(url)
assert self.is_on_page(AdvertPage)
return self.page.get_job_advert(url, advert)
def get_job_advert(self, _id, advert):
splitted_id = _id.split('#')
return self.advert_page.go(nb=splitted_id[0],
title=splitted_id[1],
company=splitted_id[2]).get_job_advert(obj=advert)