datacipen commited on
Commit
bf7bacd
·
verified ·
1 Parent(s): f76de46

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -26
app.py CHANGED
@@ -85,25 +85,27 @@ def htmlToDataframe(htmlTable):
85
  def getSavoirFaireFromHTMLMetier(url):
86
  response = requests.get(url)
87
  soup = BeautifulSoup(response.text, "html.parser")
88
- allSavoirFaire = soup.select('ul[data-cy="liste-savoir-faire-metier"] > li')
89
  if len(allSavoirFaire) != 0:
90
  allSF = "<table><tr><td>Savoir-faire</td><td>Libelle</td><td>Type</td><td>Categorie</td></tr>"
91
  for i in range(0,len(allSavoirFaire)):
92
  blockSavoirFaire = allSavoirFaire[i]
93
  try:
94
  soupSavoirFaire = BeautifulSoup(str(blockSavoirFaire), "html.parser")
95
- titleSavoirFaire = soupSavoirFaire.select('h4.fm-block-form-title')
96
- descriptSavoirFaire = soupSavoirFaire.select('div.fm-block-form-collapse-content')
97
  if removeTags(titleSavoirFaire[0]) != None:
98
  for j in range(0,len(descriptSavoirFaire)):
99
  ssblockSavoirFaire = descriptSavoirFaire[j]
100
- soupssSavoirFaire = BeautifulSoup(str(ssblockSavoirFaire), "html.parser")
101
- sstitleSavoirFaire = soupssSavoirFaire.select('h5.fm-block-form-subtitle')
102
- listSavoirFaire = soupssSavoirFaire.select('ul.list-unstyled > li')
103
- if len(listSavoirFaire) != 0:
104
- for k in range(0,len(listSavoirFaire)):
105
- blockListSavoirFaire = removeTags(listSavoirFaire[k])
106
- allSF += "<tr><td>" + removeTags(titleSavoirFaire[0]) + "</td><td>" + blockListSavoirFaire + "</td><td>" + removeTags(sstitleSavoirFaire[0]) + "</td><td>1</td></tr>"
 
 
107
  except:
108
  print("Pas de Savoir-Faire!")
109
  allSF += "</table>"
@@ -246,16 +248,18 @@ def datavisualisation_chiffres_cles_emplois(url):
246
  if removeTags(allnumembauchesfirst[0]).find('\xa0') != -1:
247
  allnumembauches = removeTags(allnumembauchesfirst[0]).split('\xa0')
248
  allnumembauches = ''.join(allnumembauches)
 
249
  else:
250
- allnumembauches = removeTags(allnumembauchesfirst[0]).replace("&nbsp;","")
251
  print("Embauches avec tableau" + str(removeTags(allnumembauchesfirst[0])))
252
  print("Embauches sans tableau" + str(removeTags(allnumembauchesfirst)))
253
 
254
  if removeTags(allnumembauchesfirst[1]).find('\xa0') != -1:
255
  allnumoffres = removeTags(allnumembauchesfirst[1]).split('\xa0')
256
  allnumoffres = ''.join(allnumoffres)
 
257
  else:
258
- allnumoffres = removeTags(allnumembauchesfirst[1]).replace("&nbsp;","")
259
  alldetailembauches = soup.select('p.hiring_text.ng-star-inserted')
260
  allnumevolutionembauches = soup.select('p.main.ng-star-inserted')
261
  alldetailevolutionembauches = soup.select('p.population_bubble-title')
@@ -279,13 +283,13 @@ def datavisualisation_chiffres_cles_emplois(url):
279
  allFAPsalaires = soup.select('p.sectorTable__cellValue')
280
  if len(allFAPsalaires) >= 3:
281
  allsalaires = "<table><tr><td>categorie</td><td>emploi</td><td>salaire</td></tr>"
282
- allsalaires += "<tr><td>" + removeTags(alltypesalaires[1]) + "</td><td>" + removeTags(allcategorie[0]) + "</td><td>" + removeTags(allFAPsalaires[0]).replace('\xa0','').replace(' ','').replace('€','') + "</td></tr>"
283
- allsalaires += "<tr><td>" + removeTags(alltypesalaires[2]) + "</td><td>" + removeTags(allcategorie[0]) + "</td><td>" + removeTags(allFAPsalaires[1]).replace('\xa0','').replace(' ','').replace('€','') + "</td></tr>"
284
- allsalaires += "<tr><td>" + removeTags(alltypesalaires[3]) + "</td><td>" + removeTags(allcategorie[0]) + "</td><td>" + removeTags(allFAPsalaires[2]).replace('\xa0','').replace(' ','').replace('€','') + "</td></tr>"
285
  if len(allFAP) >= 2 and len(allFAPsalaires) == 6:
286
- allsalaires += "<tr><td>" + removeTags(alltypesalaires[1]) + "</td><td>" + removeTags(allcategorie[4]) + "</td><td>" + removeTags(allFAPsalaires[3]).replace('\xa0','').replace(' ','').replace('€','') + "</td></tr>"
287
- allsalaires += "<tr><td>" + removeTags(alltypesalaires[2]) + "</td><td>" + removeTags(allcategorie[4]) + "</td><td>" + removeTags(allFAPsalaires[4]).replace('\xa0','').replace(' ','').replace('€','') + "</td></tr>"
288
- allsalaires += "<tr><td>" + removeTags(alltypesalaires[3]) + "</td><td>" + removeTags(allcategorie[4]) + "</td><td>" + removeTags(allFAPsalaires[5]).replace('\xa0','').replace(' ','').replace('€','') + "</td></tr>"
289
  allsalaires += "</table>"
290
 
291
  alltypedifficultes = soup.select('.tabs-main-content_persp-col2-bar.ng-star-inserted')
@@ -293,7 +297,7 @@ def datavisualisation_chiffres_cles_emplois(url):
293
  allpcdifficulte = soup.select('div.horizontal-graph_data')
294
  alldifficultes = "<table><tr><td>Indicateur</td><td>Valeur</td></tr>"
295
  for i in range(0,len(alltypedifficultes)):
296
- alldifficultes += "<tr><td>" + removeTags(alldifficulte[i]) + "</td><td>" + removeTags(allpcdifficulte[i]).replace('Pour le territoire principal FRANCE pour les ' + removeTags(alldifficulte[i]),'').replace('%','') + "</td></tr>"
297
  alldifficultes += "</table>"
298
 
299
  alltyperepartitions = soup.select('div.hiring-contract_legende_item.ng-star-inserted')
@@ -309,7 +313,7 @@ def datavisualisation_chiffres_cles_emplois(url):
309
  allpcentreprise = soup.select('span.data.ng-star-inserted')
310
  allentreprises = "<table><tr><td>Indicateur</td><td>Valeur</td></tr>"
311
  for i in range(0,len(allentrepriserepartitions)):
312
- allentreprises += "<tr><td>" + removeTags(allentrepriserepartitions[i])[0:-4] + "</td><td>" + removeTags(allentrepriserepartitions[i])[-4:].replace('%','').replace(',','.') + "</td></tr>"
313
  allentreprises += "</table>"
314
 
315
  return [alldemandeurs, allsalaires, alldifficultes, allrepartitions, allentreprises]
@@ -1393,14 +1397,14 @@ def load_from_skills(n_clicks, array_value, theme):
1393
  for j in range(0, len(array_value)):
1394
  ficheSF = getSavoirFaireFromHTMLMetier("https://candidat.francetravail.fr/metierscope/fiche-metier/" + array_value[j])
1395
  fig_SF = datavisualisation_skills_context(htmlToDataframe(ficheSF), template, paper_bgcolor, plot_bgcolor, "Savoir-faire", array_value[j])
1396
- ficheSavoir = getSavoirFromHTMLMetier("https://candidat.francetravail.fr/metierscope/fiche-metier/" + array_value[j])
1397
- fig_Savoir = datavisualisation_skills_context(htmlToDataframe(ficheSavoir), template, paper_bgcolor, plot_bgcolor, "Savoirs", array_value[j])
1398
- ficheContext = getContextFromHTMLMetier("https://candidat.francetravail.fr/metierscope/fiche-metier/" + array_value[j])
1399
- fig_Context = datavisualisation_skills_context(htmlToDataframe(ficheContext), template, paper_bgcolor, plot_bgcolor, "Contexte", array_value[j])
1400
 
1401
  children.append(dmc.GridCol(html.Div(dcc.Loading(id="loadingPlot",children=(dcc.Graph(figure=fig_SF)), type="default"), style=styleTitle), span=12),)
1402
- children.append(dmc.GridCol(html.Div(dcc.Loading(id="loadingPlot",children=(dcc.Graph(figure=fig_Savoir)), type="default"), style=styleTitle), span=12),)
1403
- children.append(dmc.GridCol(html.Div(dcc.Loading(id="loadingPlot",children=(dcc.Graph(figure=fig_Context)), type="default"), style=styleTitle), span=12),)
1404
 
1405
  return dmc.Grid(children=children), False
1406
 
 
85
  def getSavoirFaireFromHTMLMetier(url):
86
  response = requests.get(url)
87
  soup = BeautifulSoup(response.text, "html.parser")
88
+ allSavoirFaire = soup.select('div#collapse-fm-1 > div[data-cy="liste-savoir-faire-principaux"]')
89
  if len(allSavoirFaire) != 0:
90
  allSF = "<table><tr><td>Savoir-faire</td><td>Libelle</td><td>Type</td><td>Categorie</td></tr>"
91
  for i in range(0,len(allSavoirFaire)):
92
  blockSavoirFaire = allSavoirFaire[i]
93
  try:
94
  soupSavoirFaire = BeautifulSoup(str(blockSavoirFaire), "html.parser")
95
+ titleSavoirFaire = soupSavoirFaire.select('p[role="heading"]')
96
+ descriptSavoirFaire = soupSavoirFaire.select('ul > li')
97
  if removeTags(titleSavoirFaire[0]) != None:
98
  for j in range(0,len(descriptSavoirFaire)):
99
  ssblockSavoirFaire = descriptSavoirFaire[j]
100
+ #soupssSavoirFaire = BeautifulSoup(str(ssblockSavoirFaire), "html.parser")
101
+ #sstitleSavoirFaire = soupssSavoirFaire.select('h5.fm-block-form-subtitle')
102
+ #listSavoirFaire = soupssSavoirFaire.select('ul.list-unstyled > li')
103
+ #if len(listSavoirFaire) != 0:
104
+ #for k in range(0,len(listSavoirFaire)):
105
+ #blockListSavoirFaire = removeTags(listSavoirFaire[k])
106
+ #allSF += "<tr><td>" + removeTags(titleSavoirFaire[0]) + "</td><td>" + blockListSavoirFaire + "</td><td>" + removeTags(sstitleSavoirFaire[0]) + "</td><td>1</td></tr>"
107
+ blockListSavoirFaire = removeTags(ssblockSavoirFaire)
108
+ allSF += "<tr><td>" + removeTags(titleSavoirFaire[0]) + "</td><td>" + blockListSavoirFaire + "</td><td>Savoir-faire principaux</td><td>1</td></tr>"
109
  except:
110
  print("Pas de Savoir-Faire!")
111
  allSF += "</table>"
 
248
  if removeTags(allnumembauchesfirst[0]).find('\xa0') != -1:
249
  allnumembauches = removeTags(allnumembauchesfirst[0]).split('\xa0')
250
  allnumembauches = ''.join(allnumembauches)
251
+ allnumembauches = allnumembauches.replace("&nbsp;","").strip()
252
  else:
253
+ allnumembauches = removeTags(allnumembauchesfirst[0]).replace("&nbsp;","").strip()
254
  print("Embauches avec tableau" + str(removeTags(allnumembauchesfirst[0])))
255
  print("Embauches sans tableau" + str(removeTags(allnumembauchesfirst)))
256
 
257
  if removeTags(allnumembauchesfirst[1]).find('\xa0') != -1:
258
  allnumoffres = removeTags(allnumembauchesfirst[1]).split('\xa0')
259
  allnumoffres = ''.join(allnumoffres)
260
+ allnumoffres = allnumoffres.replace("&nbsp;","").strip()
261
  else:
262
+ allnumoffres = removeTags(allnumembauchesfirst[1]).replace("&nbsp;","").strip()
263
  alldetailembauches = soup.select('p.hiring_text.ng-star-inserted')
264
  allnumevolutionembauches = soup.select('p.main.ng-star-inserted')
265
  alldetailevolutionembauches = soup.select('p.population_bubble-title')
 
283
  allFAPsalaires = soup.select('p.sectorTable__cellValue')
284
  if len(allFAPsalaires) >= 3:
285
  allsalaires = "<table><tr><td>categorie</td><td>emploi</td><td>salaire</td></tr>"
286
+ allsalaires += "<tr><td>" + removeTags(alltypesalaires[1]) + "</td><td>" + removeTags(allcategorie[0]) + "</td><td>" + removeTags(allFAPsalaires[0]).replace('\xa0','').replace(' ','').replace('€','').replace('&nbsp;','').strip() + "</td></tr>"
287
+ allsalaires += "<tr><td>" + removeTags(alltypesalaires[2]) + "</td><td>" + removeTags(allcategorie[0]) + "</td><td>" + removeTags(allFAPsalaires[1]).replace('\xa0','').replace(' ','').replace('€','').replace('&nbsp;','').strip() + "</td></tr>"
288
+ allsalaires += "<tr><td>" + removeTags(alltypesalaires[3]) + "</td><td>" + removeTags(allcategorie[0]) + "</td><td>" + removeTags(allFAPsalaires[2]).replace('\xa0','').replace(' ','').replace('€','').replace('&nbsp;','').strip() + "</td></tr>"
289
  if len(allFAP) >= 2 and len(allFAPsalaires) == 6:
290
+ allsalaires += "<tr><td>" + removeTags(alltypesalaires[1]) + "</td><td>" + removeTags(allcategorie[4]) + "</td><td>" + removeTags(allFAPsalaires[3]).replace('\xa0','').replace(' ','').replace('€','').replace('&nbsp;','').strip() + "</td></tr>"
291
+ allsalaires += "<tr><td>" + removeTags(alltypesalaires[2]) + "</td><td>" + removeTags(allcategorie[4]) + "</td><td>" + removeTags(allFAPsalaires[4]).replace('\xa0','').replace(' ','').replace('€','').replace('&nbsp;','').strip() + "</td></tr>"
292
+ allsalaires += "<tr><td>" + removeTags(alltypesalaires[3]) + "</td><td>" + removeTags(allcategorie[4]) + "</td><td>" + removeTags(allFAPsalaires[5]).replace('\xa0','').replace(' ','').replace('€','').replace('&nbsp;','').strip() + "</td></tr>"
293
  allsalaires += "</table>"
294
 
295
  alltypedifficultes = soup.select('.tabs-main-content_persp-col2-bar.ng-star-inserted')
 
297
  allpcdifficulte = soup.select('div.horizontal-graph_data')
298
  alldifficultes = "<table><tr><td>Indicateur</td><td>Valeur</td></tr>"
299
  for i in range(0,len(alltypedifficultes)):
300
+ alldifficultes += "<tr><td>" + removeTags(alldifficulte[i]) + "</td><td>" + removeTags(allpcdifficulte[i]).replace('Pour le territoire principal FRANCE pour les ' + removeTags(alldifficulte[i]),'').replace('%','').strip() + "</td></tr>"
301
  alldifficultes += "</table>"
302
 
303
  alltyperepartitions = soup.select('div.hiring-contract_legende_item.ng-star-inserted')
 
313
  allpcentreprise = soup.select('span.data.ng-star-inserted')
314
  allentreprises = "<table><tr><td>Indicateur</td><td>Valeur</td></tr>"
315
  for i in range(0,len(allentrepriserepartitions)):
316
+ allentreprises += "<tr><td>" + removeTags(allentrepriserepartitions[i])[0:-4] + "</td><td>" + removeTags(allentrepriserepartitions[i])[-4:].replace('%','').replace(',','.').strip() + "</td></tr>"
317
  allentreprises += "</table>"
318
 
319
  return [alldemandeurs, allsalaires, alldifficultes, allrepartitions, allentreprises]
 
1397
  for j in range(0, len(array_value)):
1398
  ficheSF = getSavoirFaireFromHTMLMetier("https://candidat.francetravail.fr/metierscope/fiche-metier/" + array_value[j])
1399
  fig_SF = datavisualisation_skills_context(htmlToDataframe(ficheSF), template, paper_bgcolor, plot_bgcolor, "Savoir-faire", array_value[j])
1400
+ #ficheSavoir = getSavoirFromHTMLMetier("https://candidat.francetravail.fr/metierscope/fiche-metier/" + array_value[j])
1401
+ #fig_Savoir = datavisualisation_skills_context(htmlToDataframe(ficheSavoir), template, paper_bgcolor, plot_bgcolor, "Savoirs", array_value[j])
1402
+ #ficheContext = getContextFromHTMLMetier("https://candidat.francetravail.fr/metierscope/fiche-metier/" + array_value[j])
1403
+ #fig_Context = datavisualisation_skills_context(htmlToDataframe(ficheContext), template, paper_bgcolor, plot_bgcolor, "Contexte", array_value[j])
1404
 
1405
  children.append(dmc.GridCol(html.Div(dcc.Loading(id="loadingPlot",children=(dcc.Graph(figure=fig_SF)), type="default"), style=styleTitle), span=12),)
1406
+ #children.append(dmc.GridCol(html.Div(dcc.Loading(id="loadingPlot",children=(dcc.Graph(figure=fig_Savoir)), type="default"), style=styleTitle), span=12),)
1407
+ #children.append(dmc.GridCol(html.Div(dcc.Loading(id="loadingPlot",children=(dcc.Graph(figure=fig_Context)), type="default"), style=styleTitle), span=12),)
1408
 
1409
  return dmc.Grid(children=children), False
1410