Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用googlebot的网页收集器_Java_Html_Maven_Project_Googlebot - Fatal编程技术网

Java 使用googlebot的网页收集器

Java 使用googlebot的网页收集器,java,html,maven,project,googlebot,Java,Html,Maven,Project,Googlebot,我正在继续一个在我的大学已经进行了几年的项目。该项目的一项活动是使用GoogleBot收集一些网页 由于一个我无法理解的问题,这个项目没有通过这一部分。已经对可能发生的事情进行了大量研究,如果代码的某个部分已经过时 代码是用Java编写的,并使用Maven进行项目管理。 我试着从maven的“pom”中更新一些信息。 我已经尝试更改使用bot的代码部分,但没有任何效果 我正在发布代码中不正常工作的部分: private List<JSONObject> querySearch(int

我正在继续一个在我的大学已经进行了几年的项目。该项目的一项活动是使用GoogleBot收集一些网页

由于一个我无法理解的问题,这个项目没有通过这一部分。已经对可能发生的事情进行了大量研究,如果代码的某个部分已经过时

代码是用Java编写的,并使用Maven进行项目管理。 我试着从maven的“pom”中更新一些信息。 我已经尝试更改使用bot的代码部分,但没有任何效果

我正在发布代码中不正常工作的部分:

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());