当前位置: 首页 > 知识库问答 >
问题:

Java:无法从URL获取html[重复]

韦翰音
2023-03-14

我正在尝试从URL读取html文件。我的代码可以与大多数站点工作,除了一些站点,比如http://dota2.gamepedia.com/dota_2_wiki。我猜我需要设置java代理什么的?...

    try {
        URL webPage = new URL("http://dota2.gamepedia.com/Dota_2_Wiki");

        URLConnection con = webPage.openConnection();
        con.setConnectTimeout(5000);
        con.setReadTimeout(5000);

        BufferedReader in = new BufferedReader(
                            newInputStreamReader(con.getInputStream()));

        String inputLine;
        while ((inputLine = in.readLine()) != null)
            System.out.println(inputLine);

        in.close();
    }
    catch (MalformedURLException exc){exc.printStackTrace();}
    catch (IOException exc){exc.printStackTrace();}
java.io.IOException: Server returned HTTP response code: 403 for URL: http://dota2.gamepedia.com/Dota_2_Wiki
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1838)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1439)
at com.Popov.Main.main(Main.java:17)

错误代码403:我如何访问它?顺便说一句,它可以在浏览器中正常工作

共有1个答案

干浩阔
2023-03-14

您的问题很可能是因为没有正确设置用户代理。给你们这些喜欢香草爪哇的人。这些是密码

private void sendGet() throws Exception {

    String url = "http://dota2.gamepedia.com/Dota_2_Wiki";

    URL obj = new URL(url);
    CookieHandler.setDefault(new CookieManager(null, CookiePolicy.ACCEPT_ALL));
    HttpURLConnection con = (HttpURLConnection) obj.openConnection();

    con.setRequestMethod("GET");
    con.setRequestProperty("User-Agent", USER_AGENT);

    int responseCode = con.getResponseCode();
    System.out.println("\nSending 'GET' request to URL : " + url);
    System.out.println("Response Code : " + responseCode);

    BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
    String inputLine;
    StringBuffer response = new StringBuffer();

    while ((inputLine = in.readLine()) != null) {
        response.append(inputLine);
    }
    in.close();

    System.out.println(response.toString());

}

请注意,您还需要设置cookie,因为当我尝试不使用它时,代码会给我很多重定向循环

 类似资料:
  • 我有这个超文本标记语言代码: 我想获取文本/16,但当我尝试时: 我得到一个例外:org。openqa。硒。InvalidSelectorException:试图定位元素时选择器无效 我怎样才能解决这个问题?(如果我得到4/16也很好……)提前感谢

  • 主要内容:Jsoup 读取URL获取HTML 语法,Jsoup 读取URL获取HTML 说明,Jsoup 读取URL获取HTML 示例以下示例将展示使用 url 从网络获取 HTML,然后查找其数据。 Jsoup 读取URL获取HTML 语法 document : 文档对象代表 HTML DOM。 Jsoup : 连接 url 并获取 HTML 字符串的主类。 url : 要加载的 html 页面的 url。 Jsoup 读取URL获取HTML 说明 connect(url) 方法连接到 url

  • 问题内容: 我正在解析CSS,以便从链接的样式表中获取URL。这是一个Java应用程序。( 我尝试使用CSSParser( http://cssparser.sourceforge.net/ ),但是,它在解析时会默默地删除许多规则。) 所以我只是在使用Regex。我想要一个仅获取URL的正则表达式,并且足够健壮以应对来自狂野的真实CSS: 你明白了。这是在Java的regex实现中( 不是我的最

  • 问题内容: 我正在尝试阅读以下图片 但是它显示了IIOException。 这是代码: 问题答案: 您收到(错误请求)错误,因为您的网址中有。如果在参数之前对其进行了修复,则会收到错误消息(未经授权)。也许您需要一些HTTP标头才能将您的下载标识为可识别的浏览器(使用“ User-Agent”标头)或其他身份验证参数。 对于User-Agent示例,然后通过连接inputstream 使用Imag

  • 我在Java中使用selenium。我无法从组合框的html元素中获取文本。每次我在combobox中得到所选值的空白文本时。 下面是我的combobox的html结构。 我在元素中使用了以下xpath 请帮忙。 蒂亚。