试图从网站的html源中提取链接,但是我无法获取它以打印出结果。我对提取链接有些陌生,因此我的代码可能全都错了(任何澄清都会有所帮助)。我要输出的链接是来自productUrl https://shop.ccs.com/checkout/cart/add/uenc/aHR0cHM6Ly9zaG9wLmNjcy5jb20vaGFwcHktc29ja3Mtd2l6LWtoYWxpZmEtYmxhY2stYW5kLWJsdWUtc29ja3MtOS0xMQ,,/product/383628/
的https://shop.ccs.com/happy-socks-wiz-khalifa-black-and-blue-socks-9-11
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.ListIterator;
import java.util.Map;
import java.util.Scanner;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.jsoup.Connection.Method;
public class mains {
public static void main(String[] args) throws IOException {
Document doc = Jsoup.connect(productUrl)
.userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36")
.get();
Elements links = doc.select("form[action]");
Elements imports = doc.select("link[action]");
String absHref = links.attr("abs:action");
System.out.println(absHref);
}
}
答案 0 :(得分:0)
对不起,但是网站的回复不好 它使用JavaScript加载项目,而jsoup不支持javascript。
<html style="height:100%">
<head>
<meta NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
<meta name="format-detection" content="telephone=no">
<meta name="viewport" content="initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
</head>
<body style="margin:0px;height:100%">
<iframe src="/_Incapsula_Resource?SWUDNSAI=28&xinfo=2-19174853-0%200NNN%20RT%281550817024158%20820%29%20q%280%20-1%20-1%20-1%29%20r%280%20-1%29%20B12%284%2c316%2c0%29%20U2&incident_id=433000770024986768-116635626567173330&edet=12&cinfo=04000000" frameborder="0" width="100%" height="100%" marginheight="0px" marginwidth="0px">Request unsuccessful. Incapsula incident ID: 433000770024986768-116635626567173330</iframe>
</body>
</html>
答案 1 :(得分:0)
简短的答案是,如果您想将产品添加到购物篮中,则可以访问以下URL:https://shop.ccs.com/checkout/cart/addAjax/?product=383628&related_product=&qty=1
长话大说,这个网站向没有真实HTML内容的URL提交了一个表单,但是使用javascript进一步处理了您的请求。 Jsoup无法解决这个问题,但是我们可以作弊并使用Web浏览器的调试器来窥视接下来发生的事情,这就是我获得上述URL的方式。
您可以轻松地使用具有不同产品ID和数量的相同链接。请记住,如果您要提出其他要求(例如,检查购物篮中的物品),则还应传递从先前请求中获得的Cookie。没有那个,你的篮子将永远是空的。
答案 2 :(得分:0)
使用 htmlunit 抓取网站,它还支持javascript,还支持xpath和cssSelector。 使用Maven
<dependency> <groupId>net.sourceforge.htmlunit</groupId> <artifactId>htmlunit</artifactId> <version>2.33</version> </dependency>
谢谢。