static L> quickGoogle2(S query) { new L> out; S userAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:53.0) Gecko/20100101 Firefox/53.0"; S html = loadPageWithUserAgent("http://google.com/search?q=" + urlencode(query) + "&lr=lang_en&hl=en", userAgent); S url = first(loadPage_responseHeaders->get("Location")); if (url != null) html = loadPageWithUserAgent(url, userAgent); L htmlTok = htmlTok(html); LL h3s = findContainerTagDeep(htmlTok, "h3"); for (L tok : h3s) { L linkTok = first(findContainerTag(tok, "a")); if (empty(linkTok)) continue; S link = tagGet(second(linkTok), "href"); continue unless isAbsoluteURL(link); S text = htmldecode(join(dropTags(contentsOfContainerTag(linkTok)))); L sub = subList(htmlTok, magicIndexOfSubList(htmlTok, tok)+l(tok)-1); S desc = trim(htmldecode(dropTags(join(first(findContainerTagWithParams(sub, "span", "class" := "st")))))); out.add(triple(link, text, desc)); } ret out; }