我制作了两个简单的html页面
1页:
src
第2页:
<html>
<head>
</head>
<body>
<a href="page2.html">enter page 2</a>
<p>
some data
</p>
</body>
</html>
我想使用jsoup库
获取链接<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>
现在我要做的是从第1页(它在我的计算机上的本地)输入第2页,并解析它。
我试着这样做:
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/"
但它起作用了,给我做了404恐怖
编辑:
通过@JonasCz的小重播,我尝试了这个:它正在运行,我认为有一种更好,更聪明的方式。
Document doc2 = Jsoup.connect(absHref).get();
谢谢
答案 0 :(得分: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的网络爬虫,也许其他更适合。