【发布时间】: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