java - 使用 google bot 的网页收集器
问题描述
我正在继续一个在我的大学已经进行了几年的项目。该项目所做的一项活动是使用 google bot 收集一些网页。
由于一个我无法理解的问题,该项目没有通过这部分。已经对可能发生的事情进行了很多研究,如果它是过时的代码的某些部分。
代码采用 Java 编写,并使用 Maven 进行项目管理。我试图从 maven 的“pom”中更新一些信息。我已经尝试更改使用机器人的代码部分,但没有任何效果。
我正在发布无法正常工作的代码部分:
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;
}
一些变量的作用:
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();
}
在这部分没问题之前,它会与机器人连接并可以从 google 获取 html。问题是分离找到的内容并只获取应该在("h3.r> a")之间的链接。它在这部分中使用result.addAll(formatter(doc)
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());
因此,当它到达这部分时:Elements results = doc.select ("h3.r> a"),可能找不到 h3 并且不能通过不进入 for 循环来增加“结果”列表。然后返回 querysearch 函数并重试,不增加结果列表。然后,进入一个无限循环,试图获取请求的数据并且永远找不到。
如果这里有人可以帮助我,我已经尝试了一段时间,我不知道还能做什么。提前致谢。
解决方案
推荐阅读
- assembly - 需要了解 .init_array 部分
- python - 使用 Python 删除 CSV 中的第一个条目
- postgresql - “where”条件下的 PostgreSQL 性能问题
- python - 尝试导入我自己的模块时不断出错
- javascript - 从 mysql 获取数据到 append() 函数以选择输入并将值从该输入检索到其他输入
- javascript - 调用其中的函数后如何停止setInterval
- pytorch - PyTorch 中两个概率分布的 Jensen-Shanon Divergence
- scala - 在 Spark DataFrame 中查找重叠数据的函数
- matlab - 由凸包创建的曲面上点的值的插值
- git - 错误变基后如何恢复代码版本?