Java 使用googlebot的网页收集器
我正在继续一个在我的大学已经进行了几年的项目。该项目的一项活动是使用GoogleBot收集一些网页 由于一个我无法理解的问题,这个项目没有通过这一部分。已经对可能发生的事情进行了大量研究,如果代码的某个部分已经过时 代码是用Java编写的,并使用Maven进行项目管理。 我试着从maven的“pom”中更新一些信息。 我已经尝试更改使用bot的代码部分,但没有任何效果 我正在发布代码中不正常工作的部分:Java 使用googlebot的网页收集器,java,html,maven,project,googlebot,Java,Html,Maven,Project,Googlebot,我正在继续一个在我的大学已经进行了几年的项目。该项目的一项活动是使用GoogleBot收集一些网页 由于一个我无法理解的问题,这个项目没有通过这一部分。已经对可能发生的事情进行了大量研究,如果代码的某个部分已经过时 代码是用Java编写的,并使用Maven进行项目管理。 我试着从maven的“pom”中更新一些信息。 我已经尝试更改使用bot的代码部分,但没有任何效果 我正在发布代码中不正常工作的部分: private List<JSONObject> querySearch(int
private List<JSONObject> querySearch(int numSeeds, String query) {
List<JSONObject> result = new ArrayList<>();
start=0;
do {
String url = SEARCH_URL + query.replaceAll(" ", "+") + FILE_TYPE + "html" + START + start;);
Connection conn = Jsoup.connect(url).userAgent("Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)").timeout(5000);
try {
Document doc = conn.get();
result.addAll(formatter(doc);
} catch (IOException e) {
System.err.println("Could not search for seed pages in IO.");
System.err.println(e);
} catch (ParseException e) {
System.err.println("Could not search for seed pages in Parse.");
System.err.println(e);
}
start += 10;
} while (result.size() < numSeeds);
return result;
}
在这部分还没有确定之前,它将与bot连接,并可以从google获取html。问题是要分离找到的内容并只获取链接,该链接应位于(“h3.r>a”)之间。
在这一部分中,它使用result.addAll(格式化程序(doc)
公共列表格式化程序(文档文档)引发异常{
列表项=新的ArrayList();
元素结果=文件选择(“h3.r>a”);
用于(元素结果:结果){
//System.out.println(result.toString());
JSONObject条目=新的JSONObject();
entry.put(“url”,(result.attr(“href”).substring(6,result.attr(“href”).indexOf(“&”).substring(1));
entry.put(“锚点”,result.text());
因此,当它到达这个部分:元素结果=doc.select(“h3.r>a”)时,可能找不到h3,并且不能增加“结果”通过不输入for循环来列出。然后返回querysearch函数并重试,而不增加结果列表。然后,进入无限循环,试图获取请求的数据,但从未找到
如果这里有人能帮我,我已经试了一段时间了,我不知道还能做什么。提前谢谢
private static final String SEARCH_URL = "https://www.google.com/search?q=";
private static final String FILE_TYPE = "&fileType=";
private static final String START = "&start=";
private QueryBuilder queryBuilder;
public GoogleAjaxSearch() {
this.queryBuilder = new QueryBuilder();
}
public List<JSONObject> formatter(Document doc) throws ParseException {
List<JSONObject> entries = new ArrayList<>();
Elements results = doc.select("h3.r > a");
for (Element result : results) {
//System.out.println(result.toString());
JSONObject entry = new JSONObject();
entry.put("url", (result.attr("href").substring(6, result.attr("href").indexOf("&")).substring(1)));
entry.put("anchor", result.text());