Pegar dados de um input do site

Tire suas dúvidas sobre programação em AutoHotkey

Moderator: Gio

sakushou
Posts: 1
Joined: 06 Sep 2022, 09:20

Pegar dados de um input do site

06 Sep 2022, 10:39

Gostaria de sabe se tem como pegar o valor de um input do site e passar para uma planilha do Excel.

Por enquanto estou utilizando a captura pelo "MouseClick" e pelo "Send". Mas está apresentando alguns problemas as vezes, nem sempre o script roda corretamente. Eu dei uma olhada nesse tutorial do Gio Buscando dados em textos (Páginas da Web, Arquivos, Data Scraping) mas fiquei na dúvida a respeito de como utilizar o RegExMatch().

Além dessa função existe outra que posso utilizar?
Tem alguma função melhor pra pegar os dados de um input ?
User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Pegar dados de um input do site

06 Sep 2022, 14:42

Boa tarde Sakushou.

O RegExMatch() é um pouco complicado no início, mas se tentar construir alguns códigos com ele você logo vai perceber que vale a pena aprender a sintaxe dele.

De qualquer forma, se preferir, existe sim outra forma de se atingir o mesmo resultado de isolar a informação desejada. O AutoHotkey tem alguns comandos para tratar strings, e se você colocá-los em uma sequência lógica bem definidia, consegue isolar a informação também.

StringTrimLeft-> Corta um número de caracteres à esquerda do texto. Por exemplo, se Var contém o abacate é verde e eu cortar 5 caracteres à esquerda, termino com cate é verde.
StringTrimRight -> Corta um número de caracteres à direita do texto. Por exemplo, se Var contém o abacate é verde e eu cortar 3 caracteres à direita, termino com o abacate é ve.

:arrow: Se eu usar o StringTrimLeft para cortar 5 e em seguida usar o StringTrimRight para cortar 3, então o abacate é verde se torna cate é ve.

Também temos os comandos StringGetPos, que permite encontrar a posição de uma palavra ou frase dentro de um texto maior. Sendo assim, se var contém fulano me disse que o abacate é verde e eu buscar a palavra "abacate" usando esse comando, ele vai me dar como resposta 22, pois é a partir do 22º caractere (da esquerda para a direita) que está a palavra abacate (os espaços também são caracteres).

:arrow: Uma técnica comum é usar o metadado de um xml para encontrar a posição, e depois cortar TODOS os caracteres até aquela posição e ainda mais alguns que sejam correspondentes ao metadado utilizado. Por exemplo, se em um xml eu tenho

Code: Select all

<xml>
<body>
<produto>
	<nome>abacate</nome>
	<cor>verde</cor>
	<peso>1kg</peso>
</produto>
</body>
</xml>
Posso isolar a string nome buscando primeiro a posição de <nome>, depois cortando a esquerda do texto aquela quantidade de caracteres, depois cortando mais 6 caracteres (que é a quantidade que a string <nome> tem) e vou ficar com abacate</nome></produto>..... Daí é só procurar a posição de </produto> e usar o comando StringLeft (não confundir com o StringTrimLeft, pois este é outro comando) para recuperar os caracters do 1 até aquela posição nessa string.

Exemplo:

Code: Select all

texto =
(
<xml>
<body>
<produto>
	<nome>abacate</nome>
	<cor>verde</cor>
	<peso>1kg</peso>
</produto>
</body>
</xml>
)

StringGetPos, POSICAO_DO_NOME, texto, <nome>
StringTrimLeft, texto, texto, %POSICAO_DO_NOME%
StringTrimLeft, texto, texto, 6

msgbox, 0, aviso, após cortar à esquerda temos:`n %texto%

StringGetPos, POSICAO_DA_TAG_FINAL_DE_NOME, texto, </nome>
StringLeft, texto, texto, %POSICAO_DA_TAG_FINAL_DE_NOME%

msgbox, 0, aviso, após cortar à direita temos: `n %texto%

:arrow: Nos meus primeiros scripts, eu utilizava essas sequências de comandos string para isolar a informação desejada. A vantagem é que você pode ir vendo o resultado passo a passo, usando por exemplo uma msgbox para mostrar o que sobrou no texto após cada corte (ou para ver qual posição foi localizada em cada busca do StringGetPos). Mas conforme meu conhecimento de programação foi crescendo, migrei para o RegExMatch() e utilizo ele sempre que possível em meus scripts, pois ele resolve tudo com um comando ou poucos.

Espero ter ajudado, se ainda tiver alguma dúvida sobre isso, basta postar abaixo.

Return to “Ajuda e Suporte Geral”

Who is online

Users browsing this forum: No registered users and 9 guests