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 :
JavaScript
x
2
1
<div class="block_white_a post clearfix silver-job-block">
2
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:
JavaScript
1
2
1
find_all("div", {"class":"block_white_a post clearfix "}
2
Here is a link to my code.
JavaScript
1
42
42
1
from bs4 import BeautifulSoup
2
from requests import get
3
from requests.exceptions import RequestException
4
from contextlib import closing
5
from bs4 import BeautifulSoup
6
import re
7
8
def simple_get(url):
9
#Attempts to get the content at `url` by making an HTTP GET request.
10
#If the content-type of response is some kind of HTML/XML, return the
11
#text content, otherwise return None
12
try:
13
with closing(get(url, stream=True)) as resp:
14
if is_good_response(resp):
15
return resp.content
16
else:
17
return None
18
19
except RequestException as e:
20
print('Error during requests to {0} : {1}'.format(url, str(e)))
21
return None
22
23
def is_good_response(resp):
24
25
#Returns true if the response seems to be HTML, false otherwise
26
27
content_type = resp.headers['Content-Type'].lower()
28
return (resp.status_code == 200
29
and content_type is not None
30
and content_type.find('html') > -1)
31
32
raw_html = simple_get('http://www.keejob.com/offres-emploi/jobs/advanced/results/')
33
html = BeautifulSoup(raw_html, 'html.parser')
34
35
36
for item in html.find_all("div", {"class":"block_white_a post clearfix "}):
37
print( item)
38
print ("-----------------------------------------")
39
print (str(item.get_text()).strip().join(' '))
40
#Trying to get the description
41
print ("-----------------------------------------")
42
Advertisement
Answer
I exactly parsed the following in the order they are being shown:
- Job Title
- Job Description
- Job Link
Code:
JavaScript
1
51
51
1
from bs4 import BeautifulSoup
2
from requests import get
3
from requests.exceptions import RequestException
4
from contextlib import closing
5
from bs4 import BeautifulSoup
6
import re
7
8
def simple_get(url):
9
#Attempts to get the content at `url` by making an HTTP GET request.
10
#If the content-type of response is some kind of HTML/XML, return the
11
#text content, otherwise return None
12
try:
13
with closing(get(url, stream=True)) as resp:
14
if is_good_response(resp):
15
return resp.content
16
else:
17
return None
18
19
except RequestException as e:
20
print('Error during requests to {0} : {1}'.format(url, str(e)))
21
return None
22
23
def is_good_response(resp):
24
25
#Returns true if the response seems to be HTML, false otherwise
26
27
content_type = resp.headers['Content-Type'].lower()
28
return (resp.status_code == 200
29
and content_type is not None
30
and content_type.find('html') > -1)
31
32
raw_html = simple_get('http://www.keejob.com/offres-emploi/jobs/advanced/results/')
33
soup = BeautifulSoup(raw_html, 'html.parser')
34
divs = soup.find_all("div", {"class": "content row-fluid"})
35
36
jobs = []
37
for div in divs:
38
job = []
39
job.append(re.sub(r'ns*n', r'nn', div.find('a').get_text().strip(), flags=re.M))
40
try:
41
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))
42
except AttributeError:
43
job.append('No Job Description')
44
job.append(div.find('a')['href'])
45
jobs.append(job)
46
47
for i in jobs:
48
for l in i:
49
print(l)
50
print('n')
51
Output:
JavaScript
1
99
99
1
Chef Unité Plastique
2
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 ...
3
/offres-emploi/jobs/view/64208/chef-unit%C3%A9-plastique/
4
5
6
Chef D'équipe Production
7
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 ...
8
/offres-emploi/jobs/view/64207/chef-d%C3%A9quipe-production/
9
10
11
Technicien Regleur
12
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 ...
13
/offres-emploi/jobs/view/64206/technicien-regleur/
14
15
16
Architecte d'intérieur
17
No Job Description
18
/offres-emploi/jobs/view/64205/architecte-dint%C3%A9rieur/
19
20
21
Mouliste (Technicien Moule)
22
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,
23
/offres-emploi/jobs/view/64204/mouliste-technicien-moule/
24
25
26
ASSISTANTE COMMERCIAL
27
No Job Description
28
/offres-emploi/jobs/view/64203/assistante-commercial/
29
30
31
Un Directeur Financier et Administratif (H/F)
32
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 ...
33
/offres-emploi/jobs/view/64202/un-directeur-financier-et-administratif-hf/
34
35
36
CONSEILLERS EN IMMOBILIER SENIORS (H/F)
37
No Job Description
38
/offres-emploi/jobs/view/64201/conseillers-en-immobilier-seniors-hf/
39
40
41
Assistant Moyens Généraux
42
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
43
/offres-emploi/jobs/view/64199/assistant-moyens-g%C3%A9n%C3%A9raux/
44
45
46
INGÉNIEUR MAINTENANCE INDUSTRIELLE
47
No Job Description
48
/offres-emploi/jobs/view/64198/ing%C3%A9nieur-maintenance-industrielle/
49
50
51
Un (e) Stagiaire en Logistique
52
No Job Description
53
/offres-emploi/jobs/view/64197/un-e-stagiaire-en-logistique/
54
55
56
Business Process Consultant EIMEA(Consultant SAP SD)
57
No Job Description
58
/offres-emploi/jobs/view/64196/business-process-consultant-eimeaconsultant-sap-sd/
59
60
61
Coordinateur QHSE
62
No Job Description
63
/offres-emploi/jobs/view/64195/coordinateur-qhse/
64
65
66
Directeur administratif (H/F)
67
No Job Description
68
/offres-emploi/jobs/view/64194/directeur-administratif-hf/
69
70
71
MODELISTE
72
No Job Description
73
/offres-emploi/jobs/view/64193/modeliste/
74
75
76
Auditeur comptable & Réviseurs
77
No Job Description
78
/offres-emploi/jobs/view/64191/auditeur-comptable-r%C3%A9viseurs/
79
80
81
stagaire Assistance de direction et technique de commerce
82
No Job Description
83
/offres-emploi/jobs/view/64189/stagaire-assistance-de-direction-et-tache-commerciale/
84
85
86
Manager commercial
87
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,
88
/offres-emploi/jobs/view/64188/manager-commercial/
89
90
91
Responsable magasin zone sahel
92
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,-
93
/offres-emploi/jobs/view/64187/responsable-magasin-zone-sahel/
94
95
96
RESPONSABLE FINANCIER
97
No Job Description
98
/offres-emploi/jobs/view/64181/responsable-financier/
99