├── runtime.txt
├── utils
├── runtime.txt
└── status_code_file.py
├── images
├── cat.png
├── Screenshot 2021-12-04 233606.png
└── Screenshot 2021-12-04 233631.png
├── Proxy
├── __pycache__
│ └── proxies.cpython-39.pyc
└── proxies.py
├── requirements.txt
├── idea
├── misc.xml
├── inspectionProfiles
│ └── profiles_settings.xml
├── modules.xml
├── pythonProject1.iml
└── workspace.xml
├── Ethio_jobs
├── ethio_jobs.py
└── deeptable.py
├── main.py
└── README.md
/runtime.txt:
--------------------------------------------------------------------------------
1 | python == 3.9.0
--------------------------------------------------------------------------------
/utils/runtime.txt:
--------------------------------------------------------------------------------
1 | python==3.9.0
--------------------------------------------------------------------------------
/images/cat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/abdimk/ethiojobs/HEAD/images/cat.png
--------------------------------------------------------------------------------
/Proxy/__pycache__/proxies.cpython-39.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/abdimk/ethiojobs/HEAD/Proxy/__pycache__/proxies.cpython-39.pyc
--------------------------------------------------------------------------------
/images/Screenshot 2021-12-04 233606.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/abdimk/ethiojobs/HEAD/images/Screenshot 2021-12-04 233606.png
--------------------------------------------------------------------------------
/images/Screenshot 2021-12-04 233631.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/abdimk/ethiojobs/HEAD/images/Screenshot 2021-12-04 233631.png
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | requests==2.26.0
2 | urllib3==1.26.7
3 | matplotlib==3.5.0
4 | beautifulsoup4==4.10.0
5 | numpy==1.21.2
6 | lxml==4.6.4
--------------------------------------------------------------------------------
/idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/idea/inspectionProfiles/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/idea/pythonProject1.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Proxy/proxies.py:
--------------------------------------------------------------------------------
1 | try:
2 | import requests
3 | from bs4 import BeautifulSoup
4 | import random
5 | except Exception as e:
6 | print('some thing went wrong{}'.format(e))
7 |
8 |
9 | def get_proxy():
10 | url = 'https://www.sslproxies.org/'
11 | r = requests.get(url)
12 | soup = BeautifulSoup(r.content, 'lxml')
13 | return {'https': random.choice(list(map(lambda x: x[0] + ':' + x[1], list(
14 | zip(map(lambda x: x.text, soup.findAll('td')[::8]), map(lambda x: x.text, soup.findAll('td')[1::8]))))))}
15 |
16 |
17 | get_proxy()
18 |
19 |
20 | def proxy_request(request_type, url, data, **kwargs):
21 | while 1:
22 | try:
23 | proxy = get_proxy()
24 | r = requests.request(request_type, url, proxies=proxy, timeout=5, **kwargs)
25 | break
26 | except:
27 | pass
28 |
29 | return r
30 |
--------------------------------------------------------------------------------
/utils/status_code_file.py:
--------------------------------------------------------------------------------
1 | class HttpCodeError(Exception):
2 | pass
3 |
4 |
5 | def http_status(request):
6 | HTTP = {'OK': 200, 'ACCEPTED': 202,'NON_AUTHORITATIVE_INFORMATION': 203, 'NO_CONTENT': 204, 'NOT_MODIFIED': 304,
7 | 'USE_PROXY': 305, 'TEMPORARY_REDIRECT': 307, 'PERMANENT_REDIRECT': 308, 'BAD_REQUEST': 400,
8 | 'UNAUTHORIZED': 402, 'FORBIDDEN': 403, 'NOT_FOUND': 404, 'NOT_ACCEPTABLE': 406,
9 | 'PROXY_AUTHENTICATION_REQUIRED': 407, 'REQUEST_TIMEOUT': 408, 'MISDIRECTED_REQUEST': 421,
10 | 'UPGRADE_REQUIRED': 426, 'TOO_MANY_REQUESTS': 429, 'NETWORK_AUTHENTICATION_REQUIRED': 511}
11 | for key, value in HTTP.items():
12 | if request == value:
13 | return key
14 | else:
15 | pass
16 | #https: // docs.python.org / 3 / library / http.html # http-status-codes
17 | '''
18 | {200:'OK',202:'ACCEPTED',
19 | 203:'NON_AUTHORITATIVE_INFORMATION',
20 | 204:'NO_CONTENT',304:'NOT_MODIFIED',
21 | 305:'USE_PROXY',307:'TEMPORARY_REDIRECT',
22 | 308:'PERMANENT_REDIRECT',400:'BAD_REQUEST',
23 | 402:'UNAUTHORIZED',403:'FORBIDDEN',
24 | 404:'NOT_FOUND',406:'NOT_ACCEPTABLE',
25 | 407:'PROXY_AUTHENTICATION_REQUIRED',408:'REQUEST_TIMEOUT',
26 | 421:'MISDIRECTED_REQUEST',426:'UPGRADE_REQUIRED',
27 | 429:'TOO_MANY_REQUESTS',502:'BAD_GATEWAY',
28 | 505:'HTTP_VERSION_NOT_SUPPORTED',511:'NETWORK_AUTHENTICATION_REQUIRED'}
29 | '''
30 |
31 |
--------------------------------------------------------------------------------
/Ethio_jobs/ethio_jobs.py:
--------------------------------------------------------------------------------
1 | from pprint import pprint
2 | from urllib.request import Request, urlopen
3 | from bs4 import BeautifulSoup
4 | from utils import status_code_file
5 | import requests as http_request
6 | from Proxy import proxies
7 | from matplotlib import pyplot
8 | import lxml
9 |
10 | class EthioJobs(object):
11 | def __init__(self,query):
12 | self.query = query
13 | self.words = self.query.split()
14 | self.sent_str = ""
15 | for i in self.words:
16 | self.sent_str += str(i) + "+"
17 | self.sent_str = self.sent_str[:-1]
18 | self.url = f'https://www.ethiojobs.net/search-results-jobs/?action=search&listing_type%5Bequal%5D=Job&keywords%5Ball_words%5D={self.sent_str}'
19 | self.status_code = urlopen(self.url).getcode()
20 | self.req = Request(self.url, headers={'User-Agent': 'Mozilla/5.0'})
21 |
22 | def __str__(self):
23 | return str(self.sent_str)
24 |
25 | def show_status(self):
26 | #my_proxy = proxies.get_proxy()
27 | #status_code = http_request.get(self.url,proxies=urllib.request.getproxies())
28 | #status_code = urlopen(self.url).getcode()
29 | http_request_response = status_code_file.http_status(int(self.status_code))
30 | return http_request_response
31 |
32 | def numberofjobs(self):
33 | req = Request(self.url, headers={'User-Agent': 'Mozilla/5.0'})
34 | webpage = urlopen(req).read()
35 | soup = BeautifulSoup(webpage, 'lxml')
36 | number_of_jobs = soup.find_all('span', class_='pull-left sp-right')
37 | for number_of_job in number_of_jobs:
38 | try:
39 | if (int(number_of_job.text) == None or int(number_of_job.text) == 0):
40 | print('\n')
41 | except ValueError:
42 | print('No jobs found!')
43 | else:
44 | return(f'{int(number_of_job.text)} {self.query} jobs has been found!')
45 | def scraped_jobs_title(self):
46 | req = Request(self.url, headers={'User-Agent': 'Mozilla/5.0'})
47 | webpage = urlopen(req).read()
48 | soup = BeautifulSoup(webpage, 'lxml')
49 | job_titles_list = []
50 | job_titles = soup.find_all('h2')
51 | for job in job_titles:
52 | job_titles_list.append(job.text)
53 | return job_titles_list
54 | def scraped_campany_names(self):
55 | req = Request(self.url, headers={'User-Agent': 'Mozilla/5.0'})
56 | webpage = urlopen(req).read()
57 | soup = BeautifulSoup(webpage, 'lxml')
58 | campany_names = []
59 | refine_search = soup.find_all('a', class_="company-name")
60 | for campany_names_title in refine_search:
61 | campany_names.append(campany_names_title.text)
62 | return campany_names
63 | def job_over_all(self):
64 | req = Request(self.url, headers={'User-Agent': 'Mozilla/5.0'})
65 | webpage = urlopen(req).read()
66 | soup = BeautifulSoup(webpage, 'lxml')
67 | job_over_all = soup.find_all('span', class_='captions-field')
68 | job_over_all_list = []
69 | for over_all in job_over_all:
70 | job_over_all_list.append(over_all.text.strip())
71 | return job_over_all_list
72 |
73 | def scraped_campany_jobs_dead_line(self):
74 | req = Request(self.url, headers={'User-Agent': 'Mozilla/5.0'})
75 | webpage = urlopen(req).read()
76 | soup = BeautifulSoup(webpage, 'lxml')
77 | dead_line_list = []
78 | dates = soup.find_all('span', class_='text-danger captions-field')
79 | for date in dates:
80 | dead_line_list.append(date.text)
81 | return dead_line_list
82 | def scraped_campany_jobs_info(self):
83 | req = Request(self.url, headers={'User-Agent': 'Mozilla/5.0'})
84 | webpage = urlopen(req).read()
85 | soup = BeautifulSoup(webpage, 'lxml')
86 | show_brief_list = []
87 | show_brief = soup.find_all('div', class_='show-brief')
88 | for i in show_brief:
89 | show_brief_list.append(i.text)
90 |
91 | show_brief_list.pop(0)
92 | return show_brief_list
93 | def scraped_campany_jobs_links(self):
94 | req = Request(self.url, headers={'User-Agent': 'Mozilla/5.0'})
95 | webpage = urlopen(req).read()
96 | soup = BeautifulSoup(webpage, 'lxml')
97 | links = []
98 | view_job_list = soup.find_all('div', class_='listing-links')
99 | for i in view_job_list:
100 | links.append(i.a.get('href'))
101 |
102 | return links
103 |
104 |
--------------------------------------------------------------------------------
/Ethio_jobs/deeptable.py:
--------------------------------------------------------------------------------
1 | from pprint import pprint
2 | from urllib.request import Request, urlopen
3 | from bs4 import BeautifulSoup
4 | from utils import status_code_file
5 | import requests as http_request
6 | from Proxy import proxies
7 | from datetime import date
8 | from matplotlib import pyplot as plt
9 | import lxml
10 |
11 | class TableData(object):
12 | def __init__(self):
13 | self.main_url = 'https://www.ethiojobs.net/'
14 | self.daily_url = 'https://www.ethiojobs.net/search-results-jobs/?searchId=1638535666.0806&action=search&page=1&listings_per_page=100&view=list'
15 | self.req = Request(self.main_url, headers={'User-Agent': 'Mozilla/5.0'})
16 | self.webpage = webpage = urlopen(self.req).read()
17 | self.soup = BeautifulSoup(self.webpage, 'lxml')
18 | # WARRING DON'T MODIFY THIS FUNCTION
19 | def jobs_by_catagory(self):
20 | #req = Request(self.main_url, headers={'User-Agent': 'Mozilla/5.0'})
21 | #webpage = urlopen(req).read()
22 | #soup = BeautifulSoup(webpage, 'lxml')
23 | scrape_jobs = self.soup.find_all('a', class_='list-group-item')
24 | scarpe_jobs_number = self.soup.find_all('span', class_='badge badge-blue pull-right')
25 | # current on demand jobs
26 | all_jobs = []
27 | number_of_jobs = []
28 | links_of_jobs = []
29 |
30 | for jobs in scrape_jobs:
31 | all_jobs.append(jobs.h4.text)
32 |
33 | for sjn in scarpe_jobs_number:
34 | number_of_jobs.append(sjn.text)
35 |
36 | for links_of_job in scrape_jobs:
37 | links_of_jobs.append(links_of_job.get('href'))
38 |
39 | total_jobs = zip(all_jobs, number_of_jobs, links_of_jobs)
40 | return list(total_jobs)
41 |
42 | def latest_goverment_jobs(self):
43 | #req = Request(self.main_url, headers={'User-Agent': 'Mozilla/5.0'})
44 | #webpage = urlopen(req).read()
45 | #soup = BeautifulSoup(webpage, 'lxml')
46 | latest_jobs = []
47 | aw = self.soup.find_all('a', target="_blank")
48 |
49 | for i in aw:
50 | latest_jobs.append(i.text)
51 | rez = []
52 | for x in latest_jobs:
53 | rez.append(x.replace("\n", ""))
54 |
55 | while ("" in rez):
56 | rez.remove("")
57 |
58 | rez.pop(0)
59 | rez.pop(-1)
60 | rez.pop()
61 | zz = []
62 | for iw in rez:
63 | zz.append(iw)
64 |
65 | aw_time = self.soup.find_all('span', class_="pull-right")
66 | # time_stamp
67 | time_stamp = []
68 | ts = []
69 | for i in aw_time:
70 | time_stamp.append(i.text)
71 |
72 | for ix in time_stamp:
73 | if not ix.isdigit() and ix != 'Today' and ix != 'Yesterday':
74 | ts.append(ix)
75 |
76 | # more info
77 | aw_more = self.soup.find_all('p', class_="no-marign")
78 | no_margin_text = []
79 | no_margin_text_b = []
80 | rex = []
81 | for i in aw_more:
82 | no_margin_text.append(i.text)
83 | for y in no_margin_text:
84 | no_margin_text_b.append(y.replace("\t", ""))
85 |
86 | while ("" in no_margin_text_b):
87 | no_margin_text_b.remove("")
88 |
89 | ngrock_man = []
90 | for ngrok in no_margin_text_b:
91 | ngrock_man.append(ngrok.strip())
92 |
93 | # print(ngrock_man)
94 | return list(zip(zz, ts, ngrock_man))
95 |
96 | def jobs_by_location(self):
97 | #req = Request(self.main_url, headers={'User-Agent': 'Mozilla/5.0'})
98 | #webpage = urlopen(req).read()
99 | #soup = BeautifulSoup(webpage, 'lxml')
100 | catagory = []
101 | catagory_jobs_numbers = []
102 | aw = self.soup.find_all('td')
103 | for i in aw:
104 | try:
105 | catagory_jobs_numbers.append(i.a.span.text)
106 | catagory.append(i.a.h4.text)
107 | except AttributeError:
108 | pass
109 | return (list(zip(catagory, catagory_jobs_numbers)))
110 |
111 | def pyplot_job_by_location_basic(self):
112 | #req = Request(self.main_url, headers={'User-Agent': 'Mozilla/5.0'})
113 | #webpage = urlopen(req).read()
114 | #soup = BeautifulSoup(webpage, 'lxml')
115 | catagory = []
116 | catagory_jobs_numbers = []
117 | plot_loction = []
118 | aw = self.soup.find_all('td')
119 | for i in aw:
120 | try:
121 | catagory_jobs_numbers.append(i.a.span.text)
122 | catagory.append(i.a.h4.text)
123 | except AttributeError:
124 | pass
125 | for location in catagory:
126 | plot_loction.append(location.split('Jobs in ')[-1])
127 | plot_loction.reverse()
128 | real_numbers = [int(i) for i in catagory_jobs_numbers]
129 | plt.ylabel('Locations')
130 | plt.xlabel('Number of Jobs')
131 | plt.title('Jobs By Loaction')
132 | plt.plot(real_numbers,plot_loction)
133 | plt.legend(f'{date.today().year}')
134 | return plt.show()
135 | def pyplot_job_by_location_bar(self):
136 | #req = Request(self.main_url, headers={'User-Agent': 'Mozilla/5.0'})
137 | #webpage = urlopen(req).read()
138 | #soup = BeautifulSoup(webpage, 'lxml')
139 | catagory = []
140 | catagory_jobs_numbers = []
141 | plot_loction = []
142 | aw = self.soup.find_all('td')
143 | for i in aw:
144 | try:
145 | catagory_jobs_numbers.append(i.a.span.text)
146 | catagory.append(i.a.h4.text)
147 | except AttributeError:
148 | pass
149 | for location in catagory:
150 | plot_loction.append(location.split('Jobs in ')[-1])
151 | plot_loction.reverse()
152 | real_numbers = [int(i) for i in catagory_jobs_numbers]
153 | plt.ylabel('Locations')
154 | plt.xlabel('Number of Jobs')
155 | plt.title('Jobs By Loaction')
156 | #plt.figure(figsize=(17, 7))
157 | plt.bar(real_numbers, plot_loction)
158 | plt.legend(f'{date.today().year}')
159 | return plt.show()
160 |
161 | def pyplot_job_by_location_pie(self):
162 | #req = Request(self.main_url, headers={'User-Agent': 'Mozilla/5.0'})
163 | #webpage = urlopen(req).read()
164 | #soup = BeautifulSoup(webpage, 'lxml')
165 | catagory = []
166 | catagory_jobs_numbers = []
167 | plot_loction = []
168 | aw = self.soup.find_all('td')
169 | for i in aw:
170 | try:
171 | catagory_jobs_numbers.append(i.a.span.text)
172 | catagory.append(i.a.h4.text)
173 | except AttributeError:
174 | pass
175 | for location in catagory:
176 | plot_loction.append(location.split('Jobs in ')[-1])
177 |
178 | real_numbers = [int(i) for i in catagory_jobs_numbers]
179 | plt.title('Jobs By Loaction')
180 | plt.pie(real_numbers,labels=plot_loction,radius = 100000, frame = True,shadow = True)
181 | plt.legend()
182 | return plt.show()
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
--------------------------------------------------------------------------------
/idea/workspace.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 | 1638263433494
178 |
179 |
180 | 1638263433494
181 |
182 |
183 |
184 |
--------------------------------------------------------------------------------
/main.py:
--------------------------------------------------------------------------------
1 | '''
2 | Easy start
3 | '''
4 | from Ethio_jobs.ethio_jobs import EthioJobs
5 | from Ethio_jobs.deeptable import TableData
6 | from Proxy import proxies
7 | from pprint import pprint
8 |
9 | #uses
10 |
11 | # to search how many jobs are available in ethio jobs
12 | #create an instance of EthioJobs form EthioJobs class
13 | #my_job = EthioJobs('manager')
14 | # to get the title of all available mangment jobs
15 | #pprint(my_job.scraped_jobs_title())
16 | '''
17 | out put should be list of all job titles
18 | ['ACCOUNTANT ',
19 | 'Accountant ( COST ACCOUNTANT ; FACTORY EXP MUST) ',
20 | 'Marketing Department Manger ',
21 | 'Project Director ',
22 | 'Manager - ERP Management and Support ',
23 | 'Import and Export Coordinator ',
24 | 'Hygiene & Sanitation Officer ',
25 | 'Tender Division Manager ',
26 | 'WASH Project Coordinator ',
27 | 'Immediate Vacancy - Program Officer – Operation ']
28 |
29 | '''
30 | # To get the campany names only
31 | my_job = EthioJobs('manager')
32 | pprint(my_job.scraped_campany_names(),indent=3)
33 | '''
34 | out put shoud be
35 | ['Abays Trading PLC',
36 | 'Abays Trading PLC',
37 | 'Abays Trading PLC',
38 | 'Abays Trading PLC',
39 | 'Gift Real Estate P.L.C',
40 | 'Gift Real Estate P.L.C',
41 | 'Geneva Global',
42 | 'Geneva Global',
43 | 'Safaricom Telecommunications Ethiopia PLC',
44 | 'Safaricom Telecommunications Ethiopia PLC',
45 | 'Senselet Food Processing PLC',
46 | 'Senselet Food Processing PLC',
47 | 'The Lutheran World Federation World Service - Ethiopia',
48 | 'The Lutheran World Federation World Service - Ethiopia',
49 | 'Gift Real Estate P.L.C',
50 | 'Gift Real Estate P.L.C',
51 | 'Plan International Ethiopia',
52 | 'Plan International Ethiopia',
53 | 'Cuso International',
54 | 'Cuso International']
55 | '''
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 | #my_job = EthioJobs('manager')
71 | #pprint(my_job.scraped_campany_jobs_dead_line())
72 | '''
73 | ['Dec 14, 2021',
74 | 'Dec 14, 2021',
75 | 'Dec 11, 2021',
76 | 'Dec 13, 2021',
77 | 'Dec 10, 2021',
78 | 'Dec 13, 2021',
79 | 'Dec 13, 2021',
80 | 'Dec 11, 2021',
81 | 'Dec 10, 2021',
82 | 'Dec 14, 2021']
83 |
84 | '''
85 | #my_job = EthioJobs('manager')
86 | #pprint(my_job.scraped_campany_jobs_info())
87 | '''
88 | [' Summary of Role and Responsibilities Will be responsible for all '
89 | 'financial and of the company and will report to and work closely with, the '
90 | 'company management team. Finance Management Overall responsibility '
91 | 'for all aspects of financial management and control. Effective financial '
92 | 'reporting for the company, in a timely, accurate, relevant manner. '
93 | 'Maintaining accounts general...',
94 | '',
95 | ' About Geneva Global Geneva Global is an international philanthropy '
96 | 'advising company that provides strategic advice, independent research, '
97 | 'active program and grant management, and impact measurement to individuals, '
98 | 'foundations, companies, and other organizations. The company is a subsidiary '
99 | 'of Global Impact, a trusted advisor, intermediary, and implementing partner '
100 | 'in the international...',
101 | ' About Us Safaricom Telecommunications Ethiopia Plc is a company '
102 | 'supporting Ethiopia’s digital transformation. As a member of the Vodacom '
103 | 'family, we have a wealth of experience connecting over 334 million people '
104 | 'globally and over 180 million people in Africa across our network. We look '
105 | 'forward to partnering with Ethiopians as we build a new network in '
106 | 'Ethiopia. We are setting the...',
107 | ' Introduction : Senselet imports some raw materials, spare parts, '
108 | 'production consumables and specific equipment or vehicles for projects .The '
109 | 'import and export coordinator is responsible for managing the import and the '
110 | 'export of the company, in particular the follow up of all imported and '
111 | 'exported items, working together with procurement coordinator, Manage the '
112 | 'customs cleaning process with...',
113 | ' Lutheran World Federation World Service Ethiopia is a registered foreign '
114 | 'charity which has been operating in Ethiopia since 1973 implementing various '
115 | 'development and humanitarian projects in different parts of Ethiopia. LWF '
116 | 'Ethiopia works closely with the Ethiopian Evangelical Church Mekane Yesus '
117 | '(EECMY), the Ethiopian Government, UN organizations and other funding '
118 | 'partners.xa0 Its thematic...',
119 | '',
120 | ' Plan International is an independent child rights and humanitarian '
121 | 'organisation committed to children living a life free of poverty, violence '
122 | 'and injustice. We actively unite children, communities and other people '
123 | 'who share our mission to make positive lasting changes in children’s and '
124 | 'young people’s lives. We support children to gain the skills, knowledge and '
125 | 'confidence they need to claim...',
126 | ' Summary Cuso International is a Canadian development non-profit '
127 | 'organisation that works to reduce poverty and inequality through the efforts '
128 | 'of highly skilled volunteers, collaborative partnerships and compassionate '
129 | 'donors.xa0 Cuso International main areas of interventions are (i) '
130 | 'harnessing the power of volunteerism to achieve the SDGs; (ii) advancing '
131 | 'gender equality and the...']
132 | '''
133 |
134 | #to get over all information about your query
135 | #my_job = EthioJobs('manager')
136 | #pprint(my_job.job_over_all())
137 | '''
138 | ['Today',
139 | 'Dec 14, 2021',
140 | 'Abays Trading PLC',
141 | 'Addis Ababa',
142 | 'Senior Level (5+ years experience)',
143 | 'Dec 14, 2021',
144 | 'Today',
145 | 'Dec 14, 2021',
146 | 'Abays Trading PLC',
147 | 'sululta, Oromia',
148 | 'Mid Level ( 2+ - 5 years experience)',
149 | 'Dec 14, 2021',
150 | 'Yesterday',
151 | 'Dec 11, 2021',
152 | 'Gift Real Estate P.L.C',
153 | 'Addis ababa, Addis Ababa',
154 | 'Managerial Level (Manager, Supervisor, Director)',
155 | 'Dec 11, 2021',
156 | 'Yesterday',
157 | 'Dec 13, 2021',
158 | 'Geneva Global',
159 | 'Addis Ababa',
160 | 'Managerial Level (Manager, Supervisor, Director)',
161 | 'Dec 13, 2021',
162 | '2 days ago',
163 | 'Dec 10, 2021',
164 | 'Safaricom Telecommunications Ethiopia PLC',
165 | 'Addis Ababa',
166 | 'Managerial Level (Manager, Supervisor, Director)',
167 | 'Dec 10, 2021',
168 | '2 days ago',
169 | 'Dec 13, 2021',
170 | 'Senselet Food Processing PLC',
171 | 'Addis Ababa',
172 | 'Senior Level (5+ years experience)',
173 | 'Dec 13, 2021',
174 | '2 days ago',
175 | 'Dec 13, 2021',
176 | 'The Lutheran World Federation World Service - Ethiopia',
177 | 'Amhara region, Amhara',
178 | 'Mid Level ( 2+ - 5 years experience)',
179 | 'Dec 13, 2021',
180 | '2 days ago',
181 | 'Dec 11, 2021',
182 | 'Gift Real Estate P.L.C',
183 | 'addis ababa, Addis Ababa',
184 | 'Managerial Level (Manager, Supervisor, Director)',
185 | 'Dec 11, 2021',
186 | '2 days ago',
187 | 'Dec 10, 2021',
188 | 'Plan International Ethiopia',
189 | 'Gambela',
190 | 'Mid Level ( 2+ - 5 years experience)',
191 | 'Dec 10, 2021',
192 | '2 days ago',
193 | 'Dec 14, 2021',
194 | 'Cuso International',
195 | 'Addis Ababa',
196 | 'Senior Level (5+ years experience)',
197 | 'Dec 14, 2021']
198 | '''
199 | # to see new job by catagory
200 | #job = TableData()
201 | #pprint(job.jobs_by_catagory())
202 | '''
203 | [('Accounting and Finance Jobs',
204 | '53',
205 | 'https://www.ethiojobs.net/browse-by-category/Accounting%20and%20Finance/'),
206 | ('Admin, Secretarial and Cl... Jobs',
207 | '8',
208 | 'https://www.ethiojobs.net/browse-by-category/Admin%2C%20Secretarial%20and%20Clerical/'),
209 | ('Agriculture Jobs',
210 | '12',
211 | 'https://www.ethiojobs.net/browse-by-category/Agriculture/'),
212 | ('Architecture and Construc... Jobs',
213 | '1',
214 | 'https://www.ethiojobs.net/browse-by-category/Architecture%20and%20Construction/'),
215 | ('Automotive Jobs',
216 | '1',
217 | 'https://www.ethiojobs.net/browse-by-category/Automotive/'),
218 | ('Banking and Insurance Jobs',
219 | '8',
220 | 'https://www.ethiojobs.net/browse-by-category/Banking%20and%20Insurance/'),
221 | ('Business Development Jobs',
222 | '13',
223 | 'https://www.ethiojobs.net/browse-by-category/Business%20Development/'),
224 | ('Business and Administration Jobs',
225 | '35',
226 | 'https://www.ethiojobs.net/browse-by-category/Business%20and%20Administration/'),
227 | ('Communications, PR and Jo... Jobs',
228 | '3',
229 | 'https://www.ethiojobs.net/browse-by-category/Communications%2C%20PR%20and%20Journalism/'),
230 | ('Community Service Jobs',
231 | '5',
232 | 'https://www.ethiojobs.net/browse-by-category/Community%20Service/'),
233 | ('Consultancy and Training Jobs',
234 | '19',
235 | 'https://www.ethiojobs.net/browse-by-category/Consultancy%20and%20Training/'),
236 | ('Creative Arts Jobs',
237 | '1',
238 | 'https://www.ethiojobs.net/browse-by-category/Creative%20Arts/'),
239 | ('Customer Service Jobs',
240 | '1',
241 | 'https://www.ethiojobs.net/browse-by-category/Customer%20Service/'),
242 | ('Development and Project M... Jobs',
243 | '33',
244 | 'https://www.ethiojobs.net/browse-by-category/Development%20and%20Project%20Management/'),
245 | ('Economics Jobs',
246 | '16',
247 | 'https://www.ethiojobs.net/browse-by-category/Economics/'),
248 | ('Education Jobs',
249 | '8',
250 | 'https://www.ethiojobs.net/browse-by-category/Education/'),
251 | ('Engineering Jobs',
252 | '10',
253 | 'https://www.ethiojobs.net/browse-by-category/Engineering/'),
254 | ('Environment and Natural R... Jobs',
255 | '5',
256 | 'https://www.ethiojobs.net/browse-by-category/Environment%20and%20Natural%20Resource/'),
257 | ('Health Care Jobs',
258 | '27',
259 | 'https://www.ethiojobs.net/browse-by-category/Health%20Care/'),
260 | ('Hotel and Hospitality Jobs',
261 | '2',
262 | 'https://www.ethiojobs.net/browse-by-category/Hotel%20and%20Hospitality/'),
263 | ('Human Resource and Recrui... Jobs',
264 | '7',
265 | 'https://www.ethiojobs.net/browse-by-category/Human%20Resource%20and%20Recruitment/'),
266 | ('Information Technology Jobs',
267 | '7',
268 | 'https://www.ethiojobs.net/browse-by-category/Information%20Technology/'),
269 | ('Languages Jobs',
270 | '1',
271 | 'https://www.ethiojobs.net/browse-by-category/Languages/'),
272 | ('Legal Jobs', '6', 'https://www.ethiojobs.net/browse-by-category/Legal/'),
273 | ('Logistics, Transport and ... Jobs',
274 | '10',
275 | 'https://www.ethiojobs.net/browse-by-category/Logistics%2C%20Transport%20and%20Supply%20Chain/'),
276 | ('Management Jobs',
277 | '21',
278 | 'https://www.ethiojobs.net/browse-by-category/Management/'),
279 | ('Manufacturing Jobs',
280 | '2',
281 | 'https://www.ethiojobs.net/browse-by-category/Manufacturing/'),
282 | ('Media and Journalism Jobs',
283 | '1',
284 | 'https://www.ethiojobs.net/browse-by-category/Media%20and%20Journalism/'),
285 | ('Natural Sciences Jobs',
286 | '7',
287 | 'https://www.ethiojobs.net/browse-by-category/Natural%20Sciences/'),
288 | ('Pharmaceutical Jobs',
289 | '3',
290 | 'https://www.ethiojobs.net/browse-by-category/Pharmaceutical/'),
291 | ('Purchasing and Procurement Jobs',
292 | '2',
293 | 'https://www.ethiojobs.net/browse-by-category/Purchasing%20and%20Procurement/'),
294 | ('Research and Development Jobs',
295 | '4',
296 | 'https://www.ethiojobs.net/browse-by-category/Research%20and%20Development/'),
297 | ('Retail, Wholesale and Dis... Jobs',
298 | '4',
299 | 'https://www.ethiojobs.net/browse-by-category/Retail%2C%20Wholesale%20and%20Distribution/'),
300 | ('Sales and Marketing Jobs',
301 | '17',
302 | 'https://www.ethiojobs.net/browse-by-category/Sales%20and%20Marketing/'),
303 | ('Science and Technology Jobs',
304 | '3',
305 | 'https://www.ethiojobs.net/browse-by-category/Science%20and%20Technology/'),
306 | ('Security Jobs',
307 | '5',
308 | 'https://www.ethiojobs.net/browse-by-category/Security/'),
309 | ('Social Sciences and Commu... Jobs',
310 | '39',
311 | 'https://www.ethiojobs.net/browse-by-category/Social%20Sciences%20and%20Community/'),
312 | ('Telecommunications Jobs',
313 | '1',
314 | 'https://www.ethiojobs.net/browse-by-category/Telecommunications/'),
315 | ('Veterinary Services Jobs',
316 | '2',
317 | 'https://www.ethiojobs.net/browse-by-category/Veterinary%20Services/'),
318 | ('Warehouse, Supply Chain a... Jobs',
319 | '10',
320 | 'https://www.ethiojobs.net/browse-by-category/Warehouse%2C%20Supply%20Chain%20and%20Distribution/'),
321 | ('Water and Sanitation Jobs',
322 | '5',
323 | 'https://www.ethiojobs.net/browse-by-category/Water%20and%20Sanitation/')]
324 |
325 | '''
326 |
327 |
328 |
329 |
330 | # if you want to see latest available goverment jobs
331 | #job = TableData()
332 | #pprint(job.latest_goverment_jobs())
333 | '''
334 | [('Purchase Expert',
335 | ' 3 days ago',
336 | 'Ethiopian Trade Business Corporation Fruit and...'),
337 | ('Technical Assistant', ' 4 days ago', 'Wachemo University'),
338 | ('Technical Assistant', ' 4 days ago', 'Wachemo University'),
339 | ('Lecturer and Above', ' 4 days ago', 'Wachemo University'),
340 | ('Senior Technical Assistant', ' 4 days ago', 'Wachemo University'),
341 | ('Lecturer and Above', ' 4 days ago', 'Wachemo University'),
342 | ('Lecturer and Above', ' 4 days ago', 'Wachemo University'),
343 | ('Lecturer and Above', ' 4 days ago', 'Wachemo University'),
344 | ('Lecturer and Above', ' 4 days ago', 'Wachemo University'),
345 | ('Lecturer and Above', ' 4 days ago', 'Wachemo University')]
346 | '''
347 | # available jobs by location
348 | #job = TableData()
349 | #pprint(job.jobs_by_location())
350 | '''
351 | [('Jobs in Addis Ababa', '132'),
352 | ('Jobs in Afar', '2'),
353 | ('Jobs in Amhara', '17'),
354 | ('Jobs in Benishangul Gumuz', '1'),
355 | ('Jobs in Dire Dawa', '2'),
356 | ('Jobs in Gambela', '5'),
357 | ('Jobs in Harari', '1'),
358 | ('Jobs in Oromia', '12'),
359 | ('Jobs in Sidama', '2'),
360 | ('Jobs in Somali', '4'),
361 | ('Jobs in SNNPR', '2'),
362 | ('Jobs in Tigray', '4')]
363 | '''
364 |
365 | #to view pie plot graph in new avalible jobs by location
366 | job = TableData()
367 | pprint(job.pyplot_job_by_location_pie())
368 |
369 |
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
382 |
383 |
384 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | ✨ EthioJobs✨
3 |
4 |
5 | Search and Find Jobs in Ethiopia
6 |
7 |
8 |
9 |
10 |
11 |
12 | Easy start
13 |
14 |
15 |
16 |
17 | ```yaml
18 | when you want to use this module always import those stuffs and use pprint function instend instead of defualt print fucntion.
19 |
20 |
21 | from Ethio_jobs.ethio_jobs import EthioJobs
22 | from Ethio_jobs.deeptable import TableData
23 | from Proxy import proxies
24 | from pprint import pprint
25 | ```
26 | input code
27 | ```yaml
28 | uses
29 |
30 | To search how many jobs are available in ethio jobs
31 | create an instance of EthioJobs form EthioJobs class
32 | my_job = EthioJobs('manager')
33 | pprint(my_job.numberofjobs())
34 | ```
35 | output
36 | ```console
37 | 132 manager jobs has been found!
38 | ```
39 | input code
40 | ```yaml
41 | To get the title of all available mangment jobs
42 | pprint(my_job.scraped_jobs_title(),indent=3)
43 | ```
44 | output
45 | ```console
46 | ['ACCOUNTANT ','Accountant ( COST ACCOUNTANT ; FACTORY EXP MUST) ','Marketing Department Manger ',
47 | 'Project Director ','Manager - ERP Management and Support ','Import and Export Coordinator ',
48 | 'Hygiene & Sanitation Officer ','Tender Division Manager ','WASH Project Coordinator ',
49 | 'Immediate Vacancy - Program Officer – Operation ']
50 | ```
51 | input code
52 | ```yaml
53 | To get the campany names only
54 |
55 | my_job = EthioJobs('manager')
56 | pprint(my_job.scraped_campany_names(),indent=3)
57 | ```
58 | output
59 | ```console
60 | ['Abays Trading PLC','Abays Trading PLC','Abays Trading PLC',
61 | 'Abays Trading PLC','Gift Real Estate P.L.C','Gift Real Estate P.L.C',
62 | 'Geneva Global','Geneva Global','Safaricom Telecommunications Ethiopia PLC',
63 | 'Safaricom Telecommunications Ethiopia PLC','Senselet Food Processing PLC','Senselet Food Processing PLC',
64 | 'The Lutheran World Federation World Service - Ethiopia','The Lutheran World Federation World Service - Ethiopia',
65 | 'Gift Real Estate P.L.C','Gift Real Estate P.L.C','Plan International Ethiopia',
66 | 'Plan International Ethiopia','Cuso International','Cuso International']
67 | ```
68 | input code
69 | ```yaml
70 | To get dead line dates for query job
71 | N.B returns only dead link like a list object
72 | my_job = EthioJobs('manager')
73 | pprint(my_job.scraped_campany_jobs_dead_line(),indent=3)
74 | ```
75 |
76 | output
77 |
78 | ```console
79 | ['Dec 14, 2021','Dec 14, 2021','Dec 11, 2021',
80 | 'Dec 13, 2021','Dec 10, 2021','Dec 13, 2021',
81 | 'Dec 13, 2021','Dec 11, 2021','Dec 10, 2021',
82 | 'Dec 14, 2021']
83 | ```
84 | input code
85 | ```yaml
86 | To get query campany jobs info
87 |
88 | my_job = EthioJobs('manager')
89 | pprint(my_job.scraped_campany_jobs_info())
90 | ```
91 |
92 | output
93 | ```console
94 | [' Summary of Role and Responsibilities Will be responsible for all '
95 | 'financial and of the company and will report to and work closely with, the '
96 | 'company management team. Finance Management Overall responsibility '
97 | 'for all aspects of financial management and control. Effective financial '
98 | 'reporting for the company, in a timely, accurate, relevant manner. '
99 | 'Maintaining accounts general...',
100 | '',
101 | ' About Geneva Global Geneva Global is an international philanthropy '
102 | 'advising company that provides strategic advice, independent research, '
103 | 'active program and grant management, and impact measurement to individuals, '
104 | 'foundations, companies, and other organizations. The company is a subsidiary '
105 | 'of Global Impact, a trusted advisor, intermediary, and implementing partner '
106 | 'in the international...',
107 | ' About Us Safaricom Telecommunications Ethiopia Plc is a company '
108 | 'supporting Ethiopia’s digital transformation. As a member of the Vodacom '
109 | 'family, we have a wealth of experience connecting over 334 million people '
110 | 'globally and over 180 million people in Africa across our network. We look '
111 | 'forward to partnering with Ethiopians as we build a new network in '
112 | 'Ethiopia. We are setting the...',
113 | ' Introduction : Senselet imports some raw materials, spare parts, '
114 | 'production consumables and specific equipment or vehicles for projects .The '
115 | 'import and export coordinator is responsible for managing the import and the '
116 | 'export of the company, in particular the follow up of all imported and '
117 | 'exported items, working together with procurement coordinator, Manage the '
118 | 'customs cleaning process with...',
119 | ' Lutheran World Federation World Service Ethiopia is a registered foreign '
120 | 'charity which has been operating in Ethiopia since 1973 implementing various '
121 | 'development and humanitarian projects in different parts of Ethiopia. LWF '
122 | 'Ethiopia works closely with the Ethiopian Evangelical Church Mekane Yesus '
123 | '(EECMY), the Ethiopian Government, UN organizations and other funding '
124 | 'partners.xa0 Its thematic...',
125 | '',
126 | ' Plan International is an independent child rights and humanitarian '
127 | 'organisation committed to children living a life free of poverty, violence '
128 | 'and injustice. We actively unite children, communities and other people '
129 | 'who share our mission to make positive lasting changes in children’s and '
130 | 'young people’s lives. We support children to gain the skills, knowledge and '
131 | 'confidence they need to claim...',
132 | ' Summary Cuso International is a Canadian development non-profit '
133 | 'organisation that works to reduce poverty and inequality through the efforts '
134 | 'of highly skilled volunteers, collaborative partnerships and compassionate '
135 | 'donors.xa0 Cuso International main areas of interventions are (i) '
136 | 'harnessing the power of volunteerism to achieve the SDGs; (ii) advancing '
137 | 'gender equality and the...']
138 | ```
139 | input code
140 | ```yaml
141 | To get over all information about your query
142 | my_job = EthioJobs('manager')
143 | pprint(my_job.job_over_all(),indent=5)
144 | ```
145 | output
146 | ```console
147 | ['Today','Dec 14, 2021','Abays Trading PLC','Addis Ababa','Senior Level (5+ years experience)','Dec 14, 2021',
148 | 'Today','Dec 14, 2021','Abays Trading PLC','sululta, Oromia','Mid Level ( 2+ - 5 years experience)','Dec 14, 2021',
149 | 'Yesterday','Dec 11, 2021','Gift Real Estate P.L.C','Addis ababa, Addis Ababa','Managerial Level (Manager, Supervisor, Director)','Dec 11, 2021',
150 | 'Yesterday','Dec 13, 2021','Geneva Global','Addis Ababa','Managerial Level (Manager, Supervisor, Director)','Dec 13, 2021',
151 | '2 days ago','Dec 10, 2021',,'Safaricom Telecommunications Ethiopia PLC',Addis Ababa','Managerial Level (Manager, Supervisor, Director)','Dec 10, 2021'
152 | '2 days ago','Dec 13, 2021','Senselet Food Processing PLC','Addis Ababa','Senior Level (5+ years experience)','Dec 13, 2021',
153 | '2 days ago','Dec 13, 2021','The Lutheran World Federation World Service - Ethiopia','Amhara region, Amhara','Mid Level ( 2+ - 5 years experience)','Dec 13, 2021',
154 | '2 days ago','Dec 11, 2021','Gift Real Estate P.L.C','addis ababa, Addis Ababa','Managerial Level (Manager, Supervisor, Director)','Dec 11, 2021',
155 | '2 days ago','Dec 10, 2021','Plan International Ethiopia','Gambela','Mid Level ( 2+ - 5 years experience)','Dec 10, 2021',
156 | '2 days ago','Dec 14, 2021','Cuso International','Addis Ababa','Senior Level (5+ years experience)','Dec 14, 2021']
157 |
158 |
159 | ```
160 | input code
161 | ```yaml
162 | To see new job by catagory
163 | job = TableData()
164 | pprint(job.jobs_by_catagory())
165 | ```
166 | output
167 | ```console
168 | [('Accounting and Finance Jobs',
169 | '53',
170 | 'https://www.ethiojobs.net/browse-by-category/Accounting%20and%20Finance/'),
171 | ('Admin, Secretarial and Cl... Jobs',
172 | '8',
173 | 'https://www.ethiojobs.net/browse-by-category/Admin%2C%20Secretarial%20and%20Clerical/'),
174 | ('Agriculture Jobs',
175 | '12',
176 | 'https://www.ethiojobs.net/browse-by-category/Agriculture/'),
177 | ('Architecture and Construc... Jobs',
178 | '1',
179 | 'https://www.ethiojobs.net/browse-by-category/Architecture%20and%20Construction/'),
180 | ('Automotive Jobs',
181 | '1',
182 | 'https://www.ethiojobs.net/browse-by-category/Automotive/'),
183 | ('Banking and Insurance Jobs',
184 | '8',
185 | 'https://www.ethiojobs.net/browse-by-category/Banking%20and%20Insurance/'),
186 | ('Business Development Jobs',
187 | '13',
188 | 'https://www.ethiojobs.net/browse-by-category/Business%20Development/'),
189 | ('Business and Administration Jobs',
190 | '35',
191 | 'https://www.ethiojobs.net/browse-by-category/Business%20and%20Administration/'),
192 | ('Communications, PR and Jo... Jobs',
193 | '3',
194 | 'https://www.ethiojobs.net/browse-by-category/Communications%2C%20PR%20and%20Journalism/'),
195 | ('Community Service Jobs',
196 | '5',
197 | 'https://www.ethiojobs.net/browse-by-category/Community%20Service/'),
198 | ('Consultancy and Training Jobs',
199 | '19',
200 | 'https://www.ethiojobs.net/browse-by-category/Consultancy%20and%20Training/'),
201 | ('Creative Arts Jobs',
202 | '1',
203 | 'https://www.ethiojobs.net/browse-by-category/Creative%20Arts/'),
204 | ('Customer Service Jobs',
205 | '1',
206 | 'https://www.ethiojobs.net/browse-by-category/Customer%20Service/'),
207 | ('Development and Project M... Jobs',
208 | '33',
209 | 'https://www.ethiojobs.net/browse-by-category/Development%20and%20Project%20Management/'),
210 | ('Economics Jobs',
211 | '16',
212 | 'https://www.ethiojobs.net/browse-by-category/Economics/'),
213 | ('Education Jobs',
214 | '8',
215 | 'https://www.ethiojobs.net/browse-by-category/Education/'),
216 | ('Engineering Jobs',
217 | '10',
218 | 'https://www.ethiojobs.net/browse-by-category/Engineering/'),
219 | ('Environment and Natural R... Jobs',
220 | '5',
221 | 'https://www.ethiojobs.net/browse-by-category/Environment%20and%20Natural%20Resource/'),
222 | ('Health Care Jobs',
223 | '27',
224 | 'https://www.ethiojobs.net/browse-by-category/Health%20Care/'),
225 | ('Hotel and Hospitality Jobs',
226 | '2',
227 | 'https://www.ethiojobs.net/browse-by-category/Hotel%20and%20Hospitality/'),
228 | ('Human Resource and Recrui... Jobs',
229 | '7',
230 | 'https://www.ethiojobs.net/browse-by-category/Human%20Resource%20and%20Recruitment/'),
231 | ('Information Technology Jobs',
232 | '7',
233 | 'https://www.ethiojobs.net/browse-by-category/Information%20Technology/'),
234 | ('Languages Jobs',
235 | '1',
236 | 'https://www.ethiojobs.net/browse-by-category/Languages/'),
237 | ('Legal Jobs', '6', 'https://www.ethiojobs.net/browse-by-category/Legal/'),
238 | ('Logistics, Transport and ... Jobs',
239 | '10',
240 | 'https://www.ethiojobs.net/browse-by-category/Logistics%2C%20Transport%20and%20Supply%20Chain/'),
241 | ('Management Jobs',
242 | '21',
243 | 'https://www.ethiojobs.net/browse-by-category/Management/'),
244 | ('Manufacturing Jobs',
245 | '2',
246 | 'https://www.ethiojobs.net/browse-by-category/Manufacturing/'),
247 | ('Media and Journalism Jobs',
248 | '1',
249 | 'https://www.ethiojobs.net/browse-by-category/Media%20and%20Journalism/'),
250 | ('Natural Sciences Jobs',
251 | '7',
252 | 'https://www.ethiojobs.net/browse-by-category/Natural%20Sciences/'),
253 | ('Pharmaceutical Jobs',
254 | '3',
255 | 'https://www.ethiojobs.net/browse-by-category/Pharmaceutical/'),
256 | ('Purchasing and Procurement Jobs',
257 | '2',
258 | 'https://www.ethiojobs.net/browse-by-category/Purchasing%20and%20Procurement/'),
259 | ('Research and Development Jobs',
260 | '4',
261 | 'https://www.ethiojobs.net/browse-by-category/Research%20and%20Development/'),
262 | ('Retail, Wholesale and Dis... Jobs',
263 | '4',
264 | 'https://www.ethiojobs.net/browse-by-category/Retail%2C%20Wholesale%20and%20Distribution/'),
265 | ('Sales and Marketing Jobs',
266 | '17',
267 | 'https://www.ethiojobs.net/browse-by-category/Sales%20and%20Marketing/'),
268 | ('Science and Technology Jobs',
269 | '3',
270 | 'https://www.ethiojobs.net/browse-by-category/Science%20and%20Technology/'),
271 | ('Security Jobs',
272 | '5',
273 | 'https://www.ethiojobs.net/browse-by-category/Security/'),
274 | ('Social Sciences and Commu... Jobs',
275 | '39',
276 | 'https://www.ethiojobs.net/browse-by-category/Social%20Sciences%20and%20Community/'),
277 | ('Telecommunications Jobs',
278 | '1',
279 | 'https://www.ethiojobs.net/browse-by-category/Telecommunications/'),
280 | ('Veterinary Services Jobs',
281 | '2',
282 | 'https://www.ethiojobs.net/browse-by-category/Veterinary%20Services/'),
283 | ('Warehouse, Supply Chain a... Jobs',
284 | '10',
285 | 'https://www.ethiojobs.net/browse-by-category/Warehouse%2C%20Supply%20Chain%20and%20Distribution/'),
286 | ('Water and Sanitation Jobs',
287 | '5',
288 | 'https://www.ethiojobs.net/browse-by-category/Water%20and%20Sanitation/')]
289 | ```
290 |
291 | input code
292 | ```yaml
293 | To get latest available goverment jobs
294 | job = TableData()
295 | pprint(job.latest_goverment_jobs())
296 | ```
297 | output
298 | ```console
299 | [('Purchase Expert',
300 | ' 3 days ago',
301 | 'Ethiopian Trade Business Corporation Fruit and...'),
302 | ('Technical Assistant', ' 4 days ago', 'Wachemo University'),
303 | ('Technical Assistant', ' 4 days ago', 'Wachemo University'),
304 | ('Lecturer and Above', ' 4 days ago', 'Wachemo University'),
305 | ('Senior Technical Assistant', ' 4 days ago', 'Wachemo University'),
306 | ('Lecturer and Above', ' 4 days ago', 'Wachemo University'),
307 | ('Lecturer and Above', ' 4 days ago', 'Wachemo University'),
308 | ('Lecturer and Above', ' 4 days ago', 'Wachemo University'),
309 | ('Lecturer and Above', ' 4 days ago', 'Wachemo University'),
310 | ('Lecturer and Above', ' 4 days ago', 'Wachemo University')]
311 | ```
312 | input code
313 | ```yaml
314 | To get available jobs by location
315 | job = TableData()
316 | pprint(job.jobs_by_location())
317 | ```
318 | ```console
319 | [('Jobs in Addis Ababa', '132'),
320 | ('Jobs in Afar', '2'),
321 | ('Jobs in Amhara', '17'),
322 | ('Jobs in Benishangul Gumuz', '1'),
323 | ('Jobs in Dire Dawa', '2'),
324 | ('Jobs in Gambela', '5'),
325 | ('Jobs in Harari', '1'),
326 | ('Jobs in Oromia', '12'),
327 | ('Jobs in Sidama', '2'),
328 | ('Jobs in Somali', '4'),
329 | ('Jobs in SNNPR', '2'),
330 | ('Jobs in Tigray', '4')]
331 | ```
332 |
333 | welcome to the intersting part live graph using matplotlib
334 |
335 | input code
336 |
337 | ```yaml
338 | To view pie plot graph in new avalible jobs by location
339 | job = TableData()
340 | pprint(job.pyplot_job_by_location_pie())
341 | ```
342 | output
343 | ```console
344 | None
345 | ```
346 |
347 |
348 |
349 |
350 |
--------------------------------------------------------------------------------