Script pour copier du texte sur une page web

Résolu/Fermé
gojogojo_hiss Messages postés 1 Date d'inscription mardi 4 avril 2023 Statut Membre Dernière intervention 4 avril 2023 - Modifié le 7 nov. 2023 à 00:15
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 7 nov. 2023 à 00:15

Bonjour, j'aimerais savoir comment faire pour copier le texte sur cette page ici --> "https://pandamtl.com/how-to-ruin-a-love-comedy-0/" je voudrais que ça commence à copier le texte à partir du texte en gras<h2> jusqu'en bas de la page juste au-dessus du logo "Buy me a coffee", je voudrais le faire pour pouvoir le ligne hors ligne, car la où je travaille il n'y a pas d'internet

J'ai essayé différents scripts qui ne fonctionnent pas, le seul qui fonctionne est celui ci-dessous, mais le seul problème est qu'il copie tout le texte sur toute la page ce qui est très ennuyeux, avez, vous une solution, pour juste copier se que je désire

J'utilise AutoHotKey pour lancer le script.

#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%

current_page := 0 ; Initialise le numéro de la page à 0

; Ouvre une nouvelle fenêtre de navigateur et accède à la page web
Run, chrome.exe https://pandamtl.com/how-to-ruin-a-love-comedy-0/
Sleep 3000 ; Attendre le temps de chargement de la page

Loop, 2 ; Boucler 2 fois pour passer aux 2 premières pages suivantes
{
  current_page := current_page + 1 ; Incrémenter le numéro de la page

  ; Copier le texte depuis la page web
  Send, ^a^c
  ClipWait, 2

  ; Coller le texte dans un fichier texte (bloc-notes) différent pour chaque page
  file_path := "C:\Users\Byzz\Desktop\fi" . current_page . ".txt"
  FileAppend, %Clipboard%, %file_path%

  ; Passer à la page suivante
  Send, {Right}
  Sleep 2000 ; Attendre 2 secondes avant de passer à la page suivante
}


Windows / Chrome 111.0.0.0

A voir également:

7 réponses

scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
14 sept. 2023 à 00:38

Le plus simple sinon c'est d'installer une extension du style :
- https://chrome.google.com/webstore/detail/allow-right-click/hnafhkjheookmokbkpnfpmemlppjdgoi/related

Ensuite, lorsque tu visites le site, clique sur l'icône de l'extension pour restaurer la sélection, la copie et le clic droit.

Tu pourras alors sélectionner le texte que tu veux copier, et le copier dans un document texte (par exemple).

Sinon si tu veux sauvergarder des sites pour les consulters hors ligne, je te conseille une application du style WebCopy, SiteSucker, ou ArchiveBox.


0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
14 sept. 2023 à 06:41

Bonjour

Il ne faut pas utiliser les raccourcis clavier.... mais lire le code source de la page.

Regarde cette discussion et essaye d'en adapter le code à tes besoins

https://www.autohotkey.com/board/topic/67822-reading-text-from-webpage/


0
little boy62 Messages postés 3584 Date d'inscription lundi 11 novembre 2013 Statut Membre Dernière intervention 15 avril 2024 1 757
Modifié le 28 sept. 2023 à 11:16

Salut.

En AutoIT, c'est faisaible, facilement. En autohotkey aussi, par principe.

Même principe qu'énoncé par jordane45 : la lecture du code source de la page.

Pas besoin de faire un sleep, ni de lancer un navigateur. (EDIT : Ah si ^^)

Tu dis ceci : 

je voudrais que ça commence à copier le texte à partir du texte en gras<h2> jusqu'en bas de la page juste au-dessus du logo "Buy me a coffee"

1. Tu copies le code source de la page, que tu déclares dans une variable.

2. Ne pas oublier que c'est du html : il est fort probablement que la ligne contenant ce que tu recherches, possèdes une balise qui n'existe pas ailleurs. Il faut donc s'en servir justement pour récupérer la (ou les) ligne(s). 

-------------------

EDIT : 

En recherchant <h2> : la première ligne, c'est le nom du chapitre. Tu déclares dans une boucle; une fois le premier résultat trouvé, tu quittes la boucle, pour ne récupérer uniquement ce que tu voulais.

En recherchant <p> : tu as l'histoire complète, ligne par ligne. A toi de les récupérer ^^

Avec ceci, tu peux donc créer un fichier texte et voilà

++


0
little boy62 Messages postés 3584 Date d'inscription lundi 11 novembre 2013 Statut Membre Dernière intervention 15 avril 2024 1 757
29 sept. 2023 à 11:04

Petite remarque, mais importante.

Il y a un autre site, qui diffuse le même contenu.

Sans la protection "humaine" cloudflare.

Ca aide grandement pour simplifier le script

https://www.fortuneeternal.com/novel/how-to-ruin-a-love-comedy-mtl/chapter-0/

++


0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
little boy62 Messages postés 3584 Date d'inscription lundi 11 novembre 2013 Statut Membre Dernière intervention 15 avril 2024 1 757
6 nov. 2023 à 10:25

Salut et merci pour le retour.

Je garde pour moi le script ^^

Bonne journée.


0
little boy62 Messages postés 3584 Date d'inscription lundi 11 novembre 2013 Statut Membre Dernière intervention 15 avril 2024 1 757
Modifié le 7 nov. 2023 à 00:16

Yo.

Voici le script en question (En AutoIt).

#include <IE.au3>
#include <MsgBoxConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 600, 600, 192, 124)
GUISetFont(9, 500, 0, "comic sans ms")

GUICtrlCreateLabel("Chapitre", 5, 7.5, 60, 20)
$cChap = GUICtrlCreateCombo("", 70, 5, 500, 20)
$sauvegarder_chap_sel = GUICtrlCreateButton("Récupérer le chapitre sélectionné", 5, 40, 250, 25)

$edit = GUICtrlCreateEdit("", 0, 70, 600, 600)


ListingChap()

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

		Case $sauvegarder_chap_sel

			$url_chap_sel = GUICtrlRead($cChap)

			If $url_chap_sel <> "" Then

				GUICtrlSetData($edit, "")

				Recup_Chap_Sel($url_chap_sel)



			EndIf

	EndSwitch
WEnd



;~ $url = "https://www.fortuneeternal.com/novel/how-to-ruin-a-love-comedy-mtl/chapter-0/"
;~ $fichier = @DesktopDir & "\how to ruin a love melody.txt"

;~ $cs = BinaryToString(InetRead($url),1)
;~ MsgBox(0,"",$cs)




Func ListingChap()
	For $a = 0 To 313
		$url = "https://www.fortuneeternal.com/novel/how-to-ruin-a-love-comedy-mtl/chapter-" & $a & "/"
		GUICtrlSetData($cChap, $url)
	Next
EndFunc   ;==>ListingChap

Func Recup_Chap_Sel($url)

	$ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/118.0.2088.88"
	$contenu = ""

	$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
	$oHTTP.Open("GET", $url, False) ; Open a GET request to a web page
	$oHTTP.SetRequestHeader("User-Agent", $ua)
	$oHTTP.SetRequestHeader("Accept", "image/jpeg, application/x-ms-application, image/gif, image/png, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*")
	$oHTTP.Send()
	If $oHTTP.Status = 200 Then


		$cs = $oHTTP.ResponseText ; Get the response text of the web page
;~ 						MsgBox(0,"",$cs)
;~ 		ClipPut($cs)
		$cs = StringReplace($cs, "…", "…")
		$cs = StringReplace($cs, "–", "–")
		$cs = StringReplace($cs, "—", "—")
		$cs = StringReplace($cs, "‘", "‘")
		$cs = StringReplace($cs, "’", "’")
		$cs = StringReplace($cs, "“", "“")
		$cs = StringReplace($cs, "”", "”")
		$cs = StringReplace($cs, "•", "•")
		$cs = StringReplace($cs, "&", "&")
		$cs = StringReplace($cs, "<", "<")
		$cs = StringReplace($cs, ">", ">")

		$cs = StringReplace($cs, '<p>', @CRLF & '<p>')
		$cs = StringReplace($cs, '</p>', '</p>' & @CRLF & @CRLF)

;~ ClipPut($cs)
;~ MsgBox(0,"",$cs)

		For $a = 1 To StringSplit($cs, @LF)[0]

			$ligne = StringSplit($cs, @LF)[$a]
			$ligne = StringStripWS($ligne, 3)

			If StringLeft($ligne, 3) = "<p>" And StringRight($ligne, 4) = "</p>" Then

;~ MsgBox(0,"",$ligne)

				$ligne = StringReplace($ligne, "<p>", "")
				$ligne = StringReplace($ligne, "</p>", @CRLF)

				$contenu &= $ligne & @CRLF

			EndIf
		Next

	EndIf

	If $contenu <> "" Then

		$segments = StringSplit($url, "/") ; divise l'URL en segments séparés par "/"
		$chapitre = $segments[$segments[0] - 1]
;~ 		MsgBox(0, $chapitre, $contenu)
		GUICtrlSetData($edit, $contenu)


	EndIf



EndFunc   ;==>Recup_Chap_Sel

++


0
mariam-j Messages postés 1029 Date d'inscription mercredi 9 mars 2022 Statut Membre Dernière intervention 23 avril 2024
6 nov. 2023 à 11:06

Bonjour,

Avec Firefox, si je fait: "Enregistrer sous",  le navigateur.affiche la page telle que sur le site, avec le dossier associé qui contient tout le reste (CSS, JS, icon,...ect...)

Where is the problem ?

-1
little boy62 Messages postés 3584 Date d'inscription lundi 11 novembre 2013 Statut Membre Dernière intervention 15 avril 2024 1 757
6 nov. 2023 à 11:13

Salut.

Le problème ? 313 chapitres.

Si la personne compte le faire pour tous les chapitres, ça va être hardcore ^^

=)

0
mariam-j Messages postés 1029 Date d'inscription mercredi 9 mars 2022 Statut Membre Dernière intervention 23 avril 2024 > little boy62 Messages postés 3584 Date d'inscription lundi 11 novembre 2013 Statut Membre Dernière intervention 15 avril 2024
6 nov. 2023 à 11:26

Alors: "Super Macro" avec des pauses, un clic et on laisse mouliner.

-2
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
6 nov. 2023 à 11:39

Bonjour mariam-j ,

Les réponses ont déjà été données en septembre ...  pourquoi déterrer ce sujet pour, en plus, n'apporter aucune réponse utile ?

0
little boy62 Messages postés 3584 Date d'inscription lundi 11 novembre 2013 Statut Membre Dernière intervention 15 avril 2024 1 757 > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
6 nov. 2023 à 15:10

Lu'

Faut dire, à juste titre, que je suis le premier à l'avoir déterré. Sorry, my bad.

Vu que tu es modérateur, que penses tu de ceci ?

-> Je fournis le script que j'ai fait

-> On ferme le topic.

Comme ça :

- si une personne cherche à faire pareil, c'est-à-dire, récupérer du texte, elle pourra adapter le script

- et on polluera plus ce sujet ^^

++

0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > little boy62 Messages postés 3584 Date d'inscription lundi 11 novembre 2013 Statut Membre Dernière intervention 15 avril 2024
7 nov. 2023 à 00:15

Pour ma part, tu as moins déterré vu que tu avais commencé à répondre dès le mois de septembre avec des informations utiles.

Contrairement à mariam-j  qui n'a rien apporté  de technique ni d'utile à la discussion

Je pense que le demandeur ( aux abonnés absents depuis qu'on a commencé à lui répondre .. ) sera content de trouver ton script si il n'a pas déjà réussi à le faire en se servant du lien que je lui ai donné.

Et oui, je vais marquer cette discussion en résolue.

0