java - 使用 Jsoup 解析 SERPS 中的搜索描述(谷歌结果)

标签 java html css http jsoup

每当我尝试从 Google 搜索结果中删除搜索时,我总是遇到问题。我正在使用 Jsoup 提取 HTML 代码,但我无法从我需要的网页中提取信息。我的目标是达到标题下信息的描述。这是我的代码:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Proxy;


public class internetSearch {
    public void retrieveFileInfo(String pulling) {
        Document doc;
        try {
            String proxyAdress = "1.2.3.4";
            int proxyPort = 1234;
            Proxy proxy = new Proxy(Proxy.Type.HTTP,       InetSocketAddress.createUnresolved(proxyAdress, proxyPort));

            doc = Jsoup
                    .connect(pulling)
                    .userAgent("Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)")
                    .header("Content-Language", "en-US")
                    .timeout(0)
                    .get();

            System.out.println(doc.toString());
            Elements links = doc.select("div[class=g]");

            for (Element link : links) {
                Elements titles = link.select("h3[class=r]");
                String title = titles.text();

                Elements bodies = link.select("span[class=st]");
                String body = bodies.text();

                System.out.println("Title: " + title);
                System.out.println("Body: " + body + "\n");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

为了获取我的代码,我使用了网络上的许多资源。过去,我也使用过 Selenium,但无济于事。

我不断搜索我的结果以找到它所在的类“.st”(在 h3、span、.st 中),但我没有得出结论。

仅仅是 Google 弄乱了代码,还是我遗漏了一些重要的东西?

最佳答案

这是 estivate 的解决方案(这是一个带有与 JSoup 兼容的注解的 Java DOM 解析器)

Document doc = // here your JSoup document grabbing

EstivateMapper2 mapper = new EstivateMapper2()

List<GoogleResult> results = mapper.mapToList(doc, GoogleResult .class);

GoogleResult 的定义如下:

@Select("div.g")
public class GoogleResult  {

    @Text(select = "h3.r")
    public String title;

    @Text(select = "div.s cite")
    public String link;

    @Text(select = "span.st")
    public String body;

}

关于java - 使用 Jsoup 解析 SERPS 中的搜索描述(谷歌结果),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41986337/

相关文章:

JavaFX : Dynamic cell control on button click in Tableview?

java - 编译器是否优化了不添加/覆盖方法的匿名类?

html - 如何使某个 p 类成为默认 p 类(用于 Wordpress 主题)

php - 删除或自定义特定产品类别的 woocommerce 下拉排序菜单

css - 使用属性在上面选择了一个 div

html - 更改 Bootstrap 导航栏的不透明度而不是文本

java - 如何将 REST 参数映射到复杂对象?

java - 由 EnumSet 控制的互斥枚举

javascript将所有样式的元素复制到剪贴板

javascript - 使用 getElelementsByClass 翻转多张卡片