Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/12/2021, à 07:49

Pascal32

Script ou langage pour interagir avec une page Web ?

Salut tout le monde,

En ce moment, pour mon boulot, je cherche un outil (script ou langage) qui me permettrait d'interagir avec une page Web à partir d'un autre logiciel (si ce script ou langage pouvait convenir à Linux et Windows, ça serait le top).

Grosos-modo, je dois récupérer des données d'un logiciel qui accepte les scripts en VBS ou JS pour les transférer sur un logiciel qui n'est accessible qu'en ligne via des formulaires. Je me suis demandé si Python ne permettrait pas de faire ça, ou s'il n'existait pas un langage de script qui me permettrait de réaliser ces actions.

Je cherche sur le Web mais je n'arrive pas à trouver, je ne sais pas si je cherche bien. L'idée serait de pouvoir réaliser quelque chose comme ça, mais sans passer par Excel par exemple :
https://qwazerty.developpez.com/tutorie … vba-excel/

Merci !

Hors ligne

#2 Le 21/12/2021, à 08:51

serged

Re : Script ou langage pour interagir avec une page Web ?

Il faut faire un script avec wget ou curl (plus puissant mais plus compliqué).

À toi de bosser là-dessus, en fonction de tes besoins !


LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)

Hors ligne

#3 Le 21/12/2021, à 09:06

Pascal32

Re : Script ou langage pour interagir avec une page Web ?

Merci de ta réponse rapide !

Si j'ai bien compris, Wget n'est utile que pour le téléchargement et faire du travail hors-ligne, c'est ça ? Dans ce Curl me conviendrait plus, car toutes mes opérations doivent se réaliser en ligne pour pouvoir les valider, je vais essayer de regarder ça mais effectivement ça a l'air complexe.

Hors ligne

#4 Le 21/12/2021, à 13:29

k3c

Re : Script ou langage pour interagir avec une page Web ?

regarde BeautifulSoup pour récupérer les données d'une page web

la doc

https://www.crummy.com/software/BeautifulSoup/bs4/doc/

un exemple
https://www.twilio.com/blog/web-scrapin … tiful-soup


Archlinux sur Xiaomi Air 13

Hors ligne

#5 Le 21/12/2021, à 17:35

noje

Re : Script ou langage pour interagir avec une page Web ?

Python va être une usine à gaz, après selon les données il va falloir filtrer, après ça dépend ton niveau en python.

Si tu es à l’aise avec les scripts bash, tu peux aller vers ce type de solution, très rapide et souple.

Curl avec ou sans « html2text » des renforts de « grep » et de « sed » au besoin « tr » et « xargs ».
Après il faut trouver les éléments pertinents ou les patterns qui reviennent, il peut y avoir une marge d’erreur avec les 2 langages, souvent avec des données variables imprévues.

Dernière modification par noje (Le 21/12/2021, à 19:43)


- LTS 18.04 & 22.04 - jwm - cwm - zsh

Les seules vraies erreurs sont celles que nous commettons à répétition.
Les autres sont des occasions d'apprentissage. (Dalaï Lama)

Hors ligne

#6 Le 21/12/2021, à 18:48

Pascal32

Re : Script ou langage pour interagir avec une page Web ?

Merci de vos réponses !

Je ne suis pas du tout à l'aise en programmation, j'apprends sur le tas en fonction de mes besoins big_smile

En fait j'ai du mal m'exprimer : je ne cherche pas à récupérer des données depuis le web mais plutôt à insérer des données dans le web depuis d'autres applications (après, pouvoir faire les deux serait le top). Disons que je vais avoir différentes variables qu'il me faut manipuler dans des applications différentes (sous Windows principalement, mais si je peux avoir quelque chose qui fonctionne aussi sous Linux, je serais content parce qu'en dehors de mon travail je suis sous Ubuntu).

Je continue aussi à chercher de mon côté, que pensez-vous de Powershell ? A-priori c'est multi-plateforme et ça semble être le successeur de VBScript ?

Dernière modification par Pascal32 (Le 21/12/2021, à 18:50)

Hors ligne

#7 Le 21/12/2021, à 23:19

k3c

Re : Script ou langage pour interagir avec une page Web ?

Powershell, c'est surtout Windows comme plate-forme

via une image docker, c'est utilisable sous Linux, mais bon, il te faudra installer docker et être à l'aise avec les containers


Archlinux sur Xiaomi Air 13

Hors ligne

#8 Le 24/12/2021, à 19:02

LeoMajor

Re : Script ou langage pour interagir avec une page Web ?

salut,
sous nunux, gambas3 est le le langage le plus proche du VBA
powershell est remplacé par le shell courant (bash) ou un autre.

exemple

' gambas3  version 3.16.3
Public Sub Main()
  exemple_http
  exemple_shell
End
Private Sub exemple_http()
'https://www.w3schools.com/cssref/css_selectors.asp
  Dim hc As New HttpClient, d As New HtmlDocument
  Dim res As String, i As Integer
With hc
  .URL = "https://www.laposte.net/accueil"
  .Timeout = 2
  .SSL.VerifyHost = True
  .SSL.VerifyPeer = True
  .TargetFile = "/tmp/laposte.html"
 End With
 res = hc.Download(hc.url)
 d.HtmlFromString(res)

 If res Then
    Print res
    File.Save(hc.TargetFile, res)
    d.Save("/tmp/copie-laposte.html")
 Endif

Print "---\n---> 1\n---"
For Each f As XmlElement In d.Root.GetChildrenByFilter("a[href*=https://www.laposte.fr]")
  Print i, f.GetAttribute("href"), 0, f.type, f.element, f.name, f.value 
   i += 1
Next

Print "---\n--> 2\n----"
i = 0
For Each f As XmlElement In d.Root.GetChildrenByFilter("div[class]")
  Print i, f.GetAttribute("class"), 0, f.type, f.element, f.name, f.value
  i += 1
Next

Print "13", d.Root.GetChildrenByFilter("div[class]")[13].value

Print "---\n--> 3\n----"
i = 0
For Each f As XmlElement In d.Root.GetChildrenByFilter("div[id*=password]")
  Print i, f.GetAttribute("id"), 0, f.type, f.element, f.Name, f.value
  i += 1
Next

'Print "---\n---> elementnode\n---"
'  For Each n As XmlNode In d.Root.AllChildNodes
'   If n.Type = 1 Then Print n.Attributes, "!!", n.Name, ":", n.Value
'  Next

'Print "---\n---> textnode\n---"
' For Each n As XmlNode In d.Root.AllChildNodes
'   If n.Type = 2 Then Print n.Attributes, "!!", n.Name, ":", n.Value
'Next

End 
Private Sub exemple_shell()
 Dim sortie As String, motdepasse As String, ess As Integer = 1 
  System.Shell = "/bin/bash" 
 '1/ exemple
 Shell "shopt -s globstar; printf '%s\n' " & User.Home &/ "Musique/**" To sortie
 Print sortie
 'recherche
 Dim tmp As String[] = Split(sortie, "\n"), r As New Regexp
 r.Compile("^.*/(0[2-3])_(.*)\\.mp3")
 For Each item As String In tmp
   If item Ends ".mp3" Then Print ".mp3", item
   If item Then r.Exec(item)
   If r.Count = 2 Then Print "backreferences \\1 \\2", r[1].text, r[2].text 
 Next
 
 '2/ exemple
 belote:
 Print "sudo fdisk -l ; votre mot de passe ??" 
 Input motdepasse
 Shell Subst("echo &1 | sudo -S fdisk -l &>/dev/stdout", motdepasse) To sortie
 If sortie Match "incorrect" Then 
      Print "ko", ess
      If ess = 3 Then
      Print "3 essais maxi. fin"
      Goto fin 
      End If
      Inc ess 
      Goto belote
      
  Else 
    Print sortie
 Endif
 
 Catch 
   Print Error.text, Error.Where, Error.Class

fin:    
End

Si tu veux simuler les macros des tableurs genre Excel, tu peux utiliser du sql (sqlite3 par exemple) sous gambas3, et exporter (facultatif) vers libreoffice via unoconv ou pas.

Hors ligne