【问题标题】:How do I enter a url link using jsoup如何使用 jsoup 输入 url 链接
【发布时间】:2016-01-19 22:02:47
【问题描述】:

我做了2个简单的html页面

第 1 页:

<html>
 <head>
 </head>
 <body>
   <a href="page2.html">enter page 2</a>
 <p>
    some data
 </p>
</body>
</html>

第 2 页:

<html>
 <head>
 </head>
 <body>
   <a href="page1.html">enter page 1</a>
   <a href="page3.html">enter page 3</a>
 <p>
    some other data
 </p>
</body>
</html>

我想使用 jsoup 库获取链接

Document doc = Jsoup.parse(file, "UTF-8", "http://example.com/"); //file = page1.html
Element link = doc.select("a").first();
String absHref = link.attr("href"); // "page2.html/"

现在我想做的是从第 1 页(我的计算机上的本地)进入第 2 页,然后解析它。

我尝试过这样做:

Document doc2 = Jsoup.connect(absHref).get();

但它不起作用,让我 404 错误

编辑:

从@JonasCz 的一个小回放中,我尝试了这个:它正在工作,我只是认为有一个更好、更聪明的方法。

File file = new File(args[0]);
String path = file.getParent() + "\\";
Document doc = Jsoup.parse(file, "UTF-8", "http://example.com/"); //file = page1.html
Element link = doc.select("a").first();
String Href = link.attr("href"); // "page2.html/"
File file2 = new File(path+href);
Document doc2 = Jsoup.parse(file2, "UTF-8", "http://example.com/");

谢谢

【问题讨论】:

  • 您可以创建一组绝对href,并仅解析/访问那些您仍然可以添加到集合中的内容。

标签: java web-crawler jsoup


【解决方案1】:

您的方法正确,但您没有创建绝对 URL。

代替:

String absHref = link.attr("href"); // "page2.html/"

使用 :

String absHref = link.absUrl("href"); // this wil give you http://example.com/page2.html

剩下的就是你做的。

http://jsoup.org/apidocs/org/jsoup/nodes/Node.html

不幸的是,Jsoup 不是网络爬虫,而只是具有直接连接和获取页面能力的解析器。爬行逻辑 - 例如。接下来要获取/访问的内容由您负责实施。你可以用谷歌搜索 Java 的网络爬虫,也许别的更合适。

【讨论】:

  • 我不同意你的观点,我认为你可以用它制作一个带有一点递归功能的小型网络爬虫。 programcreek.com/2012/12/how-to-make-a-web-crawler-using-java
  • 对于 OP:如果您想获得实际第二个 HTML 文件的绝对 URL,则需要在解析时指定本地 HTML 文件的路径而不是 example.com 作为基本 URL ,否则这将无法按预期工作。
  • JonasCZ,我试过了,效果很好。但我相信有更聪明的方法....
  • @Yogi_Bear,您的第一条评论:当然可以,但是使用已经存在的东西(例如 Crawler4J)比自己编写更容易。
  • @Yogi_Bear 你不同意我的哪一部分??如果你用递归来做 - 你是自己实现的。这不是我的回答所说的吗?不管怎样,随心所欲,毕竟重新发明轮子也没那么糟糕。
猜你喜欢
  • 2017-08-20
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 2017-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多