pesquisei bastante e não achei uma solução, com o jsoup eu capturo varias informações de sites, porem deste sete especificamente (subs . nament . com . br) quero capturar o numero q aparece no meio da tela para escreve-lo em um txt. por isto preciso de ajuda.
Resumindo:
quero escrever em um txt o número q aparece no meio da tela no site subs . nament . com . br
Como fazer?
obrigado
ps. se souber alguma solução em outra linguagem, ok.
Você pode usar Selenium p/ isso…
Mapeia a página, dando procurando pela div que possuia a class "odometer-inside"
Assim você pode dar um .text() e resgatar o valor.
Como é um site bem simples, dá p/ usar o driver headless mesmo… vai ficar bem rápido e bem facil de fazer…
Da uma estudada no selenium, você vai ver que é bem simples.
Ai depois com esse valor em mãos… a parte de escrever em TXT é mais fácil ainda…
Caso nunca tenha manipulado arquivos com Java… da uma estudada … no google ta cheio de material sobre isso com exemplos…
Analisei o site que você passou e vi que o texto a ser capturado está dentro de um div que usa o canvas do HTML.
Se não fosse canvas eu indicaria o Selenium mesmo ou HttpClient, mas como usa o canvas dá uma pesquisa sobre “get text from canvas html5” ou então “get ocr from canvas”, algo do tipo.
Se esse site fosse HTML simples te mandava até o código
key=AIzaSyCRtJ2uhgYe7p3J-QkC6kHsm7KZz0bDIok = key de acesso a API google, acredito que pela página do Google Developer você consegue sua key de acesso também.
fields=items/statistics/subscriberCount serve para navegar nos níveis dos dados retornados sobre o canal
Com essas informações é possível você conseguir buscar várias informações sobre o canal desejado.
@Fabio_Bonnie , de qualquer forma… o selenium ainda seria uma saída… na estrutura do html, os textos estão hierarquizados em tags div… div dentro de div … mas mesmo assim… basta pegar a div “pai” e dat um text() que ele resolve…
Porém os links que passasse consumindo direto a API é bem melhor.
muuito bom, isto resolveu meu problema hehe, serio mesmo, muito obrigado
para capturar as iformaçõs da api eu utilizei o codigo abaixo, deve haver uma maneira mais elegante para isto, porem foi esta solução que encontrei.
Resumindo o código, eu leio o url com o id do canal desejado e com a api key desejada, ai eu leio a quinta linha da pagina, retiro as outras informações que nao o numero em sí, converto para inteiro e armazeno em uma variável
InputStream is = url.openStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String linha = br.readLine();
linha = br.readLine();
linha = br.readLine();
linha = br.readLine();
linha = br.readLine();
int inscritos = Integer.parseInt(linha.replace(" “subscriberCount”: “”, “”).replace(""", “”));`
Então já usei várias vezes o Selenium para esse tipo de situação.
Mas analisando o site que @guilobo passou percebi que a informação que ele queria estava dentro de um canvas HTML5, e acho que não tem como pegar o valor através do Selenium (repetindo acho, tentei e não deu certo).
Se tiver alguma outra maneira posta, aí vai que um dia precisamos e não tenha o dados num webservice