JSoup提取两个< div>使用循环时给出迭代(冗余)输出 [英] JSoup extracting two <div> gives iterated (redundant) output when using loop

查看:64
本文介绍了JSoup提取两个< div>使用循环时给出迭代(冗余)输出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I work with the following code to extract two div parts of a web page adjacently.

问题在于输出中的冗余.

The problem is the redundancy in the output.

似乎输出本身会与在Web页面中建立的div的数量进行迭代.

It seems that the output itself iterated with number of div founded in the web page .

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 example if I use this code

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 

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

The following code gives me what I want but the output repeated many times!

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.

推荐答案

这不会给我任何重复.

   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("ريال", ""));
   }

这篇关于JSoup提取两个&lt; div&gt;使用循环时给出迭代(冗余)输出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆