I’m trying to scrape the job list from a web site, but I do not have enough experience with scraping.
I found that all jobs are in a div
block like this :
<div class="block_white_a post clearfix silver-job-block">
What I want to access is the job title, job description and job link (<a href=".."
).
Unfortunately, I couldn’t understand the logic for accessing them.
So far I extracted them like this:
find_all("div", {"class":"block_white_a post clearfix "}
Here is a link to my code.
from bs4 import BeautifulSoup from requests import get from requests.exceptions import RequestException from contextlib import closing from bs4 import BeautifulSoup import re def simple_get(url): #Attempts to get the content at `url` by making an HTTP GET request. #If the content-type of response is some kind of HTML/XML, return the #text content, otherwise return None try: with closing(get(url, stream=True)) as resp: if is_good_response(resp): return resp.content else: return None except RequestException as e: print('Error during requests to {0} : {1}'.format(url, str(e))) return None def is_good_response(resp): #Returns true if the response seems to be HTML, false otherwise content_type = resp.headers['Content-Type'].lower() return (resp.status_code == 200 and content_type is not None and content_type.find('html') > -1) raw_html = simple_get('http://www.keejob.com/offres-emploi/jobs/advanced/results/') html = BeautifulSoup(raw_html, 'html.parser') for item in html.find_all("div", {"class":"block_white_a post clearfix "}): print( item) print ("-----------------------------------------") print (str(item.get_text()).strip().join(' ')) #Trying to get the description print ("-----------------------------------------")
Advertisement
Answer
I exactly parsed the following in the order they are being shown:
- Job Title
- Job Description
- Job Link
Code:
from bs4 import BeautifulSoup from requests import get from requests.exceptions import RequestException from contextlib import closing from bs4 import BeautifulSoup import re def simple_get(url): #Attempts to get the content at `url` by making an HTTP GET request. #If the content-type of response is some kind of HTML/XML, return the #text content, otherwise return None try: with closing(get(url, stream=True)) as resp: if is_good_response(resp): return resp.content else: return None except RequestException as e: print('Error during requests to {0} : {1}'.format(url, str(e))) return None def is_good_response(resp): #Returns true if the response seems to be HTML, false otherwise content_type = resp.headers['Content-Type'].lower() return (resp.status_code == 200 and content_type is not None and content_type.find('html') > -1) raw_html = simple_get('http://www.keejob.com/offres-emploi/jobs/advanced/results/') soup = BeautifulSoup(raw_html, 'html.parser') divs = soup.find_all("div", {"class": "content row-fluid"}) jobs = [] for div in divs: job = [] job.append(re.sub(r'ns*n', r'nn', div.find('a').get_text().strip(), flags=re.M)) try: job.append(re.sub(r'ns*n', r'nn', div.find('div', {'class': 'span12 no-margin-left'}).find('p').get_text().strip(), flags=re.M)) except AttributeError: job.append('No Job Description') job.append(div.find('a')['href']) jobs.append(job) for i in jobs: for l in i: print(l) print('n')
Output:
Chef Unité Plastique Une société de renommée dans le milieu industriel recrute pour l'un de ses sites "Chef Unité Plastique"Mission:* Planifier et coordonner le travail, définir et répartir les postes de travail (méthodes ... /offres-emploi/jobs/view/64208/chef-unit%C3%A9-plastique/ Chef D'équipe Production Nous recrutons pour le compte de notre client, une multinationale automobile de renommée sise à Sousse, Chef D'équipe ProductionMISSIONS:Organiser les différents îlots Superviser les teams leader productionSavoir atteindre les cadences Maîtriser parfaitement tout ... /offres-emploi/jobs/view/64207/chef-d%C3%A9quipe-production/ Technicien Regleur Une Société de renommée dans le milieu industriel recrute pour l'un de ses sites un Technicien regleurMission * Montage et réglage des outillages et périphériques lors des changements de formats et/ou ... /offres-emploi/jobs/view/64206/technicien-regleur/ Architecte d'intérieur No Job Description /offres-emploi/jobs/view/64205/architecte-dint%C3%A9rieur/ Mouliste (Technicien Moule) Une société de renommée dans le milieu industriel recrute pour l'un de ses sites un Technicien MouleMission* Réaliser à l'unité ou en petite série les différentes pièces (coque, pont, ailerons, ... /offres-emploi/jobs/view/64204/mouliste-technicien-moule/ ASSISTANTE COMMERCIAL No Job Description /offres-emploi/jobs/view/64203/assistante-commercial/ Un Directeur Financier et Administratif (H/F) HR House International recrute pour l'un de ses clients, un groupe tunisien de renommé:Un Directeur Financier et Administratif (H/F) Principales missions:superviser la comptabilité et assurer les clôtures mensuelles et annuelles.établir les déclarations ... /offres-emploi/jobs/view/64202/un-directeur-financier-et-administratif-hf/ CONSEILLERS EN IMMOBILIER SENIORS (H/F) No Job Description /offres-emploi/jobs/view/64201/conseillers-en-immobilier-seniors-hf/ Assistant Moyens Généraux Microcred Tunisie, 8ème filiale du Groupe Microcred, souhaite recruter Un Assistant Moyens Généraux. Placé(e) sous la supervision directe du Responsable Moyens Généraux, le(a) candidat(e) évoluera dans un environnement exigeant, créatif et ... /offres-emploi/jobs/view/64199/assistant-moyens-g%C3%A9n%C3%A9raux/ INGÉNIEUR MAINTENANCE INDUSTRIELLE No Job Description /offres-emploi/jobs/view/64198/ing%C3%A9nieur-maintenance-industrielle/ Un (e) Stagiaire en Logistique No Job Description /offres-emploi/jobs/view/64197/un-e-stagiaire-en-logistique/ Business Process Consultant EIMEA(Consultant SAP SD) No Job Description /offres-emploi/jobs/view/64196/business-process-consultant-eimeaconsultant-sap-sd/ Coordinateur QHSE No Job Description /offres-emploi/jobs/view/64195/coordinateur-qhse/ Directeur administratif (H/F) No Job Description /offres-emploi/jobs/view/64194/directeur-administratif-hf/ MODELISTE No Job Description /offres-emploi/jobs/view/64193/modeliste/ Auditeur comptable & Réviseurs No Job Description /offres-emploi/jobs/view/64191/auditeur-comptable-r%C3%A9viseurs/ stagaire Assistance de direction et technique de commerce No Job Description /offres-emploi/jobs/view/64189/stagaire-assistance-de-direction-et-tache-commerciale/ Manager commercial Mission : Le manager commercial élabore des stratégies commerciales afin d’optimiser les résultats et d’agrandir voire de développer le réseau. Pour cela, il met en œuvre des plans d’actions commerciales, ... /offres-emploi/jobs/view/64188/manager-commercial/ Responsable magasin zone sahel Missions- Accueillir, conseiller et satisfaire le client,- Organiser et piloter les activités en boutique,- Développer le chiffre d’affaire et atteindre les objectifs fixés,- Manager, animer et motiver l’équipe de vente,- ... /offres-emploi/jobs/view/64187/responsable-magasin-zone-sahel/ RESPONSABLE FINANCIER No Job Description /offres-emploi/jobs/view/64181/responsable-financier/