@@ -0,0 +1,1360 @@
+package com.google.step.snippet.external;%0A%0Aimport com.google.step.snippet.data.Card;%0Aimport java.io.IOException;%0Aimport org.jsoup.Jsoup;%0Aimport org.jsoup.nodes.Document;%0Aimport org.jsoup.select.Elements;%0A%0Apublic final class GeeksForGeeksClient %7B%0A  private static final String TITLE_TAG = %22h1%22;%0A  private static final String DESC_TAG = %22p%22;%0A  private static final String SNIPPET_CLASS = %22code-block%22;%0A  private static final String CODE_CLASS = %22code-container%22;%0A%0A  public Card search(String geeksLink) %7B%0A    Document doc = null;%0A    try %7B%0A      doc = Jsoup.connect(geeksLink).get();%0A    %7D catch (IOException e) %7B%0A      return null;%0A    %7D%0A    Elements titles = doc.getElementsByTag(TITLE_TAG);%0A    if (titles.isEmpty() %7C%7C titles.first().text().isEmpty()) %7B%0A      return null;%0A    %7D%0A    Elements descriptions = doc.getElementsByTag(DESC_TAG);%0A    if (descriptions.isEmpty() %7C%7C descriptions.first().text().isEmpty()) %7B%0A      return null;%0A    %7D%0A    Elements snippets = doc.getElementsByClass(SNIPPET_CLASS);%0A    if (snippets.isEmpty() %7C%7C snippets.first().getElementsByClass(CODE_CLASS).text().isEmpty()) %7B%0A      return null;%0A    %7D%0A    String title = titles.first().text();%0A    String description = descriptions.first().text();%0A    String code = snippets.first().getElementsByClass(CODE_CLASS).text();%0A    return new Card(title, code, geeksLink, description);%0A  %7D%0A%7D%0A

add geeks scraper