[indeed] adapt to browser2
This commit is contained in:
parent
cb04fc79b4
commit
b9260c7bc0
4 changed files with 82 additions and 134 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue