Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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进行google搜索和打印结果_Java_Url - Fatal编程技术网

用java进行google搜索和打印结果

用java进行google搜索和打印结果,java,url,Java,Url,在这里,我希望在Google上执行搜索,并使用终端将结果作为单独的输出文件。在终端中,只输入要搜索的关键字。这就是我所做的 import java.io.*; import java.net.MalformedURLException; import java.net.URL; import java.util.Scanner; public class GOOGLE { public static void main(String[] args) { Scann

在这里,我希望在Google上执行搜索,并使用终端将结果作为单独的输出文件。在终端中,只输入要搜索的关键字。这就是我所做的

import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Scanner;


public class GOOGLE {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        System.out.println("Enter search key");
        String key = scan.nextLine();
        String keyUpdated = key.replaceAll("\\s", "+");

        System.out.println(keyUpdated);

        try {

            URL url = new URL("https://www.google.lk/search?q=" + keyUpdated);

            BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
            BufferedWriter writer = new BufferedWriter(new FileWriter(key + ".html"));

            String line;

            while ((line = reader.readLine()) != null) {

                writer.write(line);

                writer.newLine();
            }


            reader.close();
            writer.close();
        } catch (MalformedURLException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

}
这就是我作为关键词进入计算机科学时得到的

java.io.IOException: Server returned HTTP response code: 403 for URL: https://www.google.lk/search?q=computer+science
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1876)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1474)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
    at java.net.URL.openStream(URL.java:1045)
    at GOOGLE.main(Google.java:23)

浏览器签名已导致请求被拒绝

看看这条线:


正如我的评论链接的答案或@Eric Snider的答案中所解释的,问题在于用于呼叫谷歌的用户代理。为了提供有效的用户代理,您可以向VM添加以下选项,或者使用其他用户代理(如果愿意):

java -Dhttp.agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0" <program_name>

可能重复的代码仍在使用中…:你成功了吗?
System.setProperty("http.agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0");