【问题标题】:How to input a String for a URL in Java?如何在 Java 中为 URL 输入字符串?
【发布时间】:2019-04-26 02:55:57
【问题描述】:

我正在构建一个网络爬虫,以从 craigslist 获取学校项目的搜索结果。 我正在尝试为搜索查询获取用户输入并将其添加以完成 URL。

此功能不是我提交项目所必需的,但我想知道如何使此功能发挥作用。

public static void main(String[] args) throws IOException{
    String incomSite1 = "\"https://houston.craigslist.org/search/sss?query=";
    System.out.println("What would you like to search for?");
    Scanner userIn = new Scanner(System.in);
    String srchItem = userIn.nextLine();
    String comSite = incomSite1 + srchItem + "\"";

    final String url = "https://houston.craigslist.org/search/sss?query=computer";

    try {
        final Document results = Jsoup.connect(url).get();

        System.out.println(results.outerHtml());
    }
    catch (Exception ex) {
        ex.printStackTrace();
    }
}

这部分代码我应该从网站上抓取搜索结果并显示 HTML。

如果我只是将浏览器中的 URL 复制/粘贴到“最终字符串 url =”中而不使用所有其他代码,那么它可以正常工作。

但是,当我使用 Scanner、incomSite1、srchItem 和 comSite 填充“最终字符串 url”时,我收到以下错误:

java.lang.IllegalArgumentException: Malformed URL: "https://houston.craigslist.org/search/sss?query=computer"
    at org.jsoup.helper.HttpConnection.url(HttpConnection.java:136)
    at org.jsoup.helper.HttpConnection.connect(HttpConnection.java:76)
    at org.jsoup.Jsoup.connect(Jsoup.java:73)
    at CraigCrawl.main(CraigCrawl.java:21)
Caused by: java.net.MalformedURLException: no protocol: "https://houston.craigslist.org/search/sss?query=computer"
    at java.net.URL.<init>(Unknown Source)
    at java.net.URL.<init>(Unknown Source)
    at java.net.URL.<init>(Unknown Source)
    at org.jsoup.helper.HttpConnection.url(HttpConnection.java:134)

【问题讨论】:

  • 为什么需要引用url?好吧,它不应该也不应该 - 删除将导致成功
  • 那行得通。谢谢你。我假设 URL 必须用引号引起来,因为当我从浏览器复制/粘贴 URL 而不是接受用户输入时需要它们。

标签: java web-crawler jsoup


【解决方案1】:

尝试从 URL 的开头和结尾删除 Double Qoutes。因为url 已经是一个字符串,所以你不需要添加那些引号

【讨论】:

    猜你喜欢
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    相关资源
    最近更新 更多