每当我尝试从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),但我没有得出结论。
只是谷歌混淆了代码还是我错过了一些重要的东西?
答案 0 :(得分:0)
这是一个带有estivate的解决方案(这是一个带有Annotation与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;
}