当使用循环</div>时,JSoup提取两个<div>给出迭代(冗余)输出

时间:2015-04-05 13:52:39

标签: java loops for-loop jsoup

我使用以下代码来相邻地提取网页的两个div部分。

问题在于输出的冗余。

似乎输出本身迭代了网页中创建的div数。

Document doc = Jsoup.connect("https://www.bezaat.com/ksa/riyadh/cars/all/1").get();
for(Element el :doc.select("div")  )
 ("div.adv_content_details").text()

System.out.println(el.select("div.adv_content").select
+""+el.select("div.adv_side_price").text().replace("ريال", ""));

这是第一个div

<div class="adv_content_details"> 
 <a href="https://www.bezaat.com/ksa/riyadh/cars/crashed-cars/ad/7237581"> نشتري السيارات المصدومه والعطلانه جميع ا... </a> 
 <span> نشتري جميع السيارات المصدومه والعطلانه جميع الانواع والموديلات ونقوم بتخليص اوراقها من المرور 054190... </span> 
</div>
<div class="adv_content_details"> 
 <a href="https://www.bezaat.com/ksa/riyadh/cars/nissan/ad/12338243"> باترول فتك 2005 </a> 
 <span> فتك 2005 قير اتماتيك </span> 
</div>
<div class="adv_content_details"> 
 <a href="https://www.bezaat.com/ksa/riyadh/cars/lexus/ad/12337943"> لكزس es350 2012 للبيع </a> 
 <span> بسم الله الرحمن الرحيم لكزس خليجي سقف بانوراما لؤلؤي للبيع ماشي 117000 كم بدون رش باستثناء الصدام... </span> 
</div>
<div class="adv_content_details"> 
 <a href="https://www.bezaat.com/ksa/riyadh/cars/cars-for-waiver/ad/12337775"> سيارة نسيان التيما 2014 للتنازل </a> 
 <span> للتنازل سياره نيسان التيما 2014 </span> 
</div>
<div class="adv_content_details"> 
 <a href="https://www.bezaat.com/ksa/riyadh/cars/mitsubishi/ad/12336659"> لانسر 2009 للبيع مافيها اي مشكلة </a> 
 <span> سيارة لانسر 2009 للبيع مغيرلها قبل شهرين كراسي ماكينة اصلي ومن اسبوع 4 كفرات جديدة وكل قطعة غيرتها ف... </span> 
</div>
<div class="adv_content_details"> 
 <a href="https://www.bezaat.com/ksa/riyadh/cars/isuzu/ad/12336437"> دينا ايسوزو NPR موديل 2002 طرمبة كبيرة... </a> 
 <span> دينا ايسوزو NPR موديل 2002 طرمبة كبيرة 6مسمار المكينة والمحركات على الشرط العداد / 177000 Km... </span> 
</div>
<div class="adv_content_details"> 
 <a href="https://www.bezaat.com/ksa/riyadh/cars/bmw/ad/12336044"> للبيع او البدل </a> 
 <span> بي أم X5 موديل 2006 - 8 سلندر -محرك 4.4 ماشيه 237 الف فل كامل - نظيفه وصل السوم في موقع اخر... </span> 
</div>
<div class="adv_content_details"> 
 <a href="https://www.bezaat.com/ksa/riyadh/cars/kia/ad/12334927"> كيا سبورتاج دفع رباعي للبيع </a> 
 <span> سيارة كيا سبورتاج موديل 2009 اتوماتيك بحالة الوكالة مالك اول </span> 
</div>
<div class="adv_content_details"> 
 <a href="https://www.bezaat.com/ksa/riyadh/cars/bmw/ad/9542881"> سيارة بي ام دبلو x5 من فرنسا للبيع </a> 
 <span> المواصفات : 63605 كم بنزين 261 كيلوواط (355 حصان) أوتوماتيكي معدات الداخلية بلوتوث... </span> 
</div>
<div class="adv_content_details"> 
 <a href="https://www.bezaat.com/ksa/riyadh/cars/toyota/ad/12334646"> كامري 2014 </a> 
 <span> كامري 2014 GL لون اسود نص فل ماشية 25 الف قابلة للزيادة </span> 
</div>

这是第二个div

<div class="adv_side_price">
  100,000 ريال 
</div>
<div class="adv_side_price">
  50,000 ريال 
</div>
<div class="adv_side_price">
  89,000 ريال 
</div>
<div class="adv_side_price">
  19,500 ريال 
</div>
<div class="adv_side_price">
  37,000 ريال 
</div>
<div class="adv_side_price">
  150,000 ريال 
</div>
<div class="adv_side_price">
  60,000 ريال 
</div>

例如,如果我使用此代码

for(Element el :doc.select("div")  )

 System.out.println(el.select("div.adv_side_price").text().replace("ريال", "")); 

输出

100,000  50,000  89,000  19,500  37,000  150,000  60,000 
















100,000  50,000  89,000  19,500  37,000  150,000  60,000 

100,000  50,000  89,000  19,500  37,000  150,000  60,000 


100,000  50,000  89,000  19,500  37,000  150,000  60,000 


100,000  50,000  89,000  19,500  37,000  150,000  60,000 













100,000  50,000  89,000  19,500  37,000  150,000  60,000 
100,000  50,000  89,000  19,500  37,000  150,000  60,000 

100,000  50,000  89,000  19,500  37,000  150,000  60,000 
100,000  50,000  89,000  19,500  37,000  150,000  60,000 

100,000 



100,000 

50,000 



50,000 

89,000 



89,000 








19,500 



19,500 











37,000 



37,000 

150,000 



150,000 

60,000 



60,000 






















100,000  50,000  89,000  19,500  37,000  150,000  60,000 
















100,000  50,000  89,000  19,500  37,000  150,000  60,000 

100,000  50,000  89,000  19,500  37,000  150,000  60,000 


100,000  50,000  89,000  19,500  37,000  150,000  60,000 


100,000  50,000  89,000  19,500  37,000  150,000  60,000 













100,000  50,000  89,000  19,500  37,000  150,000  60,000 
100,000  50,000  89,000  19,500  37,000  150,000  60,000 

100,000  50,000  89,000  19,500  37,000  150,000  60,000 
100,000  50,000  89,000  19,500  37,000  150,000  60,000 

100,000 



100,000 

50,000 



50,000 

89,000 



89,000 








19,500 



19,500 











37,000 



37,000 

150,000 



150,000 

60,000 



60,000 

以下代码为我提供了我想要的内容,但输出重复多次!

for(Element el :doc.select("div.adv_side_price")  )
 {
for(Element el2 :doc.select("div.adv_content").select("div.adv_content_details"))   
{
System.out.println(el.text()..replace("ريال", "")+""+el2.text().hashCode()) ;

}

输出:

    100,000     -32974058
    100,000     -471316755
    100,000     -1748877593
    100,000     -391495340
    100,000     710155706
    100,000     -1556515445
    100,000     2139601232
    100,000     1718442269
    100,000     475592394
    100,000     589546731
    65,000  -32974058
    65,000  -471316755
    65,000  -1748877593
    65,000  -391495340
    65,000  710155706
    65,000  -1556515445
    65,000  2139601232
    65,000  1718442269
    65,000  475592394
    65,000  589546731
    35,000  -32974058
    35,000  -471316755
    35,000  -1748877593
    35,000  -391495340
    35,000  710155706
    35,000  -1556515445
    35,000  2139601232
    35,000  1718442269
    35,000  475592394
    35,000  589546731
    25,000  -32974058
    25,000  -471316755
    25,000  -1748877593
    25,000  -391495340
    25,000  710155706
    25,000  -1556515445
    25,000  2139601232
    25,000  1718442269
    25,000  475592394
    25,000  589546731
    19,000  -32974058
    19,000  -471316755
    19,000  -1748877593
    19,000  -391495340
    19,000  710155706
    19,000  -1556515445
    19,000  2139601232
    19,000  1718442269
    19,000  475592394
    19,000  589546731
    50,000  -32974058
    50,000  -471316755
    50,000  -1748877593
    50,000  -391495340
    50,000  710155706
    50,000  -1556515445
    50,000  2139601232
    50,000  1718442269
    50,000  475592394
    50,000  589546731
    13,000  -32974058
    13,000  -471316755
    13,000  -1748877593
    13,000  -391495340
    13,000  710155706
    13,000  -1556515445
    13,000  2139601232
    13,000  1718442269
    13,000  475592394
    13,000  589546731
    56,000  -32974058
    56,000  -471316755
    56,000  -1748877593
    56,000  -391495340
    56,000  710155706
    56,000  -1556515445
    56,000  2139601232
    56,000  1718442269
    56,000  475592394
    56,000  589546731
    14,000  -32974058
    14,000  -471316755
    14,000  -1748877593
    14,000  -391495340
    14,000  710155706
    14,000  -1556515445
    14,000  2139601232
    14,000  1718442269
    14,000  475592394
    14,000  589546731


Any suggestion please.

1 个答案:

答案 0 :(得分:0)

这并没有给我任何重复。

   Document doc = Jsoup.connect("https://www.bezaat.com/ksa/riyadh/cars/all/1").get();
   Elements elements = doc.select("div.adv_item");
   for (Element el : elements) {
       System.out.println(el.select(".adv_content_details").text());
       System.out.println(el.select(".adv_side_price").text().replace("ريال", ""));
   }