Boa noite a todos,
Gostaria de "parsear" uma página da web, só que ao fazer isso, algumas tags não aparecem, alguém saberia me dizer o porque disso ?
Métodos que já tentei:
[HTMLunit]
import java.util.List;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
public class MyScrapping {
public static void main(String[] args) {
new MyScrapping().pegaHtml();
}
public void pegaHtml() {
WebClient client = new WebClient();
client.getOptions().setCssEnabled(false);
client.getOptions().setJavaScriptEnabled(false);
try {
String searchUrl = "http://www.guj.com.br/t/robo-para-busca-remota/136843";
HtmlPage page = client.getPage(searchUrl);
// Imprime todo o HTML
System.out.println("PAGE: " + page.asXml());
List<HtmlElement> items = (List<HtmlElement>)page.getByXPath("//*[@id=\"post_1\"]/div/div[2]/div[1]/div[2]/a");
if(items.isEmpty()){
System.out.println("No items found !");
}else{
}
for (HtmlElement item : items) {
// Até aqui já imprime o conteúdo da tag buscada
System.out.println("ITEM : " + item.asText());
}
System.out.println();
}catch(Exception e){
e.printStackTrace();
}
}
[JSOUP]
import java.io.IOException;
import org.jsoup.select.Elements;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class MyJsoup {
public static void main(String[] args) {
new MyJsoup().pegaTag();
}
public void pegaHtmlFull(){
Document document;
try {
String url="http://www.guj.com.br/t/robo-para-busca-remota/136843";
document = Jsoup.connect(url)
.header("Accept-Encoding", "gzip, deflate")
.userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36")
.maxBodySize(0)
.timeout(600000)
.get();
String question =document.toString();
System.out.println(" whole content: "+question);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void pegaTag() {
try {
Document document = Jsoup.connect("https://app.stpu.com.br/static/js/deal-439.min.js").get();
String site = document.html();
System.out.println("SITE: " + site);
Elements elementos = document.select("div[class='discount-price-text discount-price-from']"); //Get price
if(elementos.isEmpty()) {
System.out.println("ELEMENTOS VAZIOS");
}
for (Element e : elementos) {
System.out.println("ELEMENTOS: " + e);
}
} catch (IOException e) {
e.printStackTrace();
}
}
[BUFFERED]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
public class MyBuffered {
public static void main(String[] args) {
URL url = null;
// File file = new File("C:\\TutorialArquivos\\page.html");
try {
url = new URL("https://www.peixeurbano.com.br/rio-de-janeiro/kilograma-vila-isabel/rodizio-de-pizzas-completoqyoq");
new MyBuffered().getPage(url);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public void getPage(URL url) throws IOException {
BufferedReader in =
new BufferedReader(new InputStreamReader(url.openStream()));
// BufferedWriter out = new BufferedWriter(new FileWriter(file));
String inputLine;
while ((inputLine = in.readLine()) != null) {
// Imprime página no console
System.out.println(inputLine);
// Grava pagina no arquivo
// out.write(inputLine);
// out.newLine();
}
in.close();
// out.flush();
// out.close();
}
Tentei por exemplo:
No site: https://www.peixeurbano.com.br/rio-de-janeiro/rio-water-planet/rio-water-planetnurx
Pegar a tag:
<p class="discount-price-text discount-price-from">
<span>R$ <span id="show-discount"><span class="js-deal-price"><span>34<span class="cents">,90</span></span></span></span></span>
</p>
No site: http://www.guj.com.br/t/robo-para-busca-remota/136843
Pegar a tag:
<span title="Jan 25, 2012 7:34 pm" data-time="1327527285000" data-format="tiny" class="relative-date">Jan '12</span>
Mas ao pegar o HTML nunca vem com essas tags, alguém teria uma ideia do porque ? Estou a semana toda tentando e nada.
Meu objetivo é pegar valores de um site, mas se tem tags que eu não consigo pegar não dará muito certo.