Analisi del codice sorgente HTML tramite AppleScript

Sto cercando di analizzare un file HTML che ho convertito in un file TXT all’interno di Automator.

Ho precedentemente scaricato il file HTML da un sito Web utilizzando Automator e ora sto cercando di analizzare il codice sorgente.

Preferibilmente, voglio prendere le informazioni del solo tavolo e ho bisogno di ripetere questa azione per 1800 diversi file HTML.

Ecco un esempio del codice sorgente:

    
Christian Sieling

Christian Sieling

Updated On: 4 Aug, 2010
Report Inaccurate Data

at Lumix Capital Management Ltd.

Role

Other

Organisation Type

Asset Manager

Email [email protected]
Website http://www.lumixcapital.com/
Phone 41 78 616 7334
Fax
Mailing Address Birrenstrasse 30
City Schindellegi
State CH
Country Switzerland
Zip/ Postal Code 8834

Il mio tentativo AppleScript che utilizza i text item delimiters per estrarre la tabella in modo simile:

 set p to input set ex to extractBetween(p, "", "
") -- extract the URL to extractBetween(SearchText, startText, endText) set tid to AppleScript's text item delimiters set AppleScript's text item delimiters to startText set endItems to text of text item -1 of SearchText set AppleScript's text item delimiters to endText set beginningToEnd to text of text item 1 of endItems set AppleScript's text item delimiters to tid return beginningToEnd end extractBetween

Come posso analizzare la tabella dal file HTML?

Sei molto vicino. Il problema è la tua variabile startText. Il tag della tabella di partenza non è nel testo html, quindi non può essere trovato. La linea che avvia la tabella è in realtà …

 

Così ho modificato il codice per cercare quel tag in 2 passaggi. Primo…

  

E poi questo separatamente ...

 > 

In questo modo possiamo ignorare tutto il codice che viene fornito con il tag della tabella (larghezza, bordo, ecc.) Perché presumo che varierà tra i file. Dopo aver fatto ciò otteniamo solo il codice della tabella. Prova questo...

 set p to input set ex to extractBetween(p, "", "") to extractBetween(SearchText, startText1, startText2, endText) set tid to AppleScript's text item delimiters set AppleScript's text item delimiters to startText1 set endItems to text item -1 of SearchText set AppleScript's text item delimiters to endText set beginningToEnd to text item 1 of endItems set AppleScript's text item delimiters to startText2 set finalText to (text items 2 thru -1 of beginningToEnd) as text set AppleScript's text item delimiters to tid return finalText end extractBetween 

Piuttosto che creare il tuo parser HTML, puoi sfruttare il parser HTML in Safari tramite il comando do javascript. JavaScript ha funzionalità integrate per lavorare con elementi e dati HTML.

Questo script ottiene l’HTML solo per la prima tabella di una pagina:

 tell application "Safari" tell document 1 set theFirstTableHTML to do JavaScript "document.getElementsByTagName('table')[0].innerHTML" end tell end tell 

Puoi utilizzare questa tecnica per applicare DOM Scripting di base a qualsiasi pagina e prendere tutti i dati che vuoi leggere. Puoi ottenere solo i valori delle celle della tabella o qualunque cosa tu voglia.

Provare:

 set xxx to read alias "Mac OS X:Users:paolo:Desktop:paolo.html" set yyy to do shell script "echo " & quoted form of xxx & " | grep -o \\" 

Una meraviglia su una sola riga che funziona:

dire all’applicazione “Safari” per impostare sourceCode ai caratteri (offset di in (origine del documento 1 come stringa)) thru ((offset di "/ table" in (origine del documento 1 come stringa)) + (conteggio di "/ tabella ")) di (origine del documento 1 come stringa) come stringa