的我正在学习如何使用jsoup,我已经创建了一个名为search
方法,它使用jsoup的选择contains
和containsOwn
搜索一个给定的项目,回到它的价格。 (现在,项目名称为了测试目的而被硬编码,但该方法稍后将接受参数以接受任何项目名称)。Jsoup选择返回所有值,而不是搜索值
我遇到的问题是选择器不工作,并且页面上的所有价格都将被返回,而不是正在搜索的一个项目,在这种情况下是“百叶窗”。因此,在此示例中,如果您按照链接进行操作,则该页面上只有一个项目表示百叶窗,价格列为“$ 30 - $ 110原价$ 18 - $ 66销售额”,但该页面上的每个项目都会返回。
我知道,使用jsoup我可以明确地调用div的名称,并从中提取信息。但我想把它变成一个更大的项目,并从沃尔玛,西尔斯,梅西等其他连锁店提取同一物品的价格。不仅仅是我在我的代码中使用的特定网站。因此,如果我想这样做,我不能明确地调用div名称,因为这只能解决一个站点的问题,而不能解决其他站点的问题,并且我想采取一种方法来同时包含大多数这些站点。
如何提取与其合适项目相关的价格?有没有办法做到这一点,以便项目和价格提取将适用于大多数网站?
我将不胜感激任何帮助。
private static String search(){
Document doc;
String priceText = null;
try{
doc = Jsoup.connect("http://www.jcpenney.com/for-the-home/sale/cat.jump?id=cat100590341&deptId=dept20000011").get();
Elements divs = doc.select("div");
HashMap items = new HashMap();
for(Element element : doc.select("div:contains(blinds)")){
//For those items that say "buy 1 get 1 free"
String buyOneText = divs.select(":containsOwn(buy 1)").text();
Element all = divs.select(":containsOwn($)").first();
priceText = element.select(":containsOwn($)").text();
items.put(element, priceText);
}
System.out.println(priceText);
}catch(Exception e){
e.printStackTrace();
}
return priceText;
}
谢谢您的帮助 – Rebecca 2014-12-08 19:28:21