2016-12-02 30 views
1

if文を通して実行できるように、ページ上のブルンアイコンを探すプログラムを作成しようとしています。私が見ているページはhttps://www.yelp.com/biz/sabor-unido-newarkです。私はJSoupを使用していて、これを達成する正しい方法を見つけるのに苦労されているページ上にアイコンがあるかどうかを確認するにはどうすればいいですか?

<span aria-hidden="true" style="fill: #ea5c1d; width: 30px; height: 30px;" class="icon icon--30-bullhorn icon--size-30"> 
    <svg class="icon_svg"> 
     <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#30x30_bullhorn"></use> 
    </svg> 
</span> 

:クロームのインスペクタツールを使用して、私は、ブルホーンアイコン用のHTMLを見つけました。基本的に言えば、「ページにはホーンアイコンがあれば、これをやってください」私は多数の要素セレクタとhasAttr()メソッドを試しましたが、どれもうまくいかないようです。これは非常にうまくいくかもしれません。なぜなら、私はHTMLに堪能ではなく、セレクタ構文を間違っているからかもしれません。それにもかかわらず、あなたはどう思いますか?

import java.util.ArrayList; 
import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element; 
import org.jsoup.nodes.Attribute; 
import org.jsoup.select.Elements; 
import java.io.IOException; 
import java.util.Scanner; 

public class BullHorn 
{ 
    public static void main(String[] args) throws IOException, Exception, RuntimeException 
    {   
     String linkUrl = "https://www.yelp.com/biz/mega-pizza-newark?osq=pizza"; 

     Document linkClick = Jsoup.connect(linkUrl).timeout(3000).get(); 

     boolean bullhorn; 

     for(Element element : linkClick.getAllElements()) 
     { 
      for(Attribute attribute : element.attributes()) 
      { 
       if (attribute.getValue().equalsIgnoreCase("#30x30_bullhorn")) 
       { 
        bullhorn = true; 
       } 
      } 
     } 

     if (bullhorn = true) 
     { 
      System.out.println("True"); 
     } 

     else 
     { 
      System.out.println("False"); 
     } 
    } 
} 

事があり、これは常にさえ、実際に拡声器のアイコンを持っていないリンクに、trueを返します:

は、ここに私が働いているものの現在の反復です。

+0

は、あなたのコードを含むいただきありがとうございます:) –

+0

あなたは ''場合(拡声器=真)で本当に大きな構文エラーがあり、 '=' 'sが代入演算子であることを覚えておいてください'==' 'はプリミティブ間の等価性をチェックします。また、if文を 'if(bullhorn)'と書くこともできます。 –

+0

絶えず別のことをしようとしている2時間以上のうわさと、それは行方不明でした。それは面白い。ありがとう。 –

答えて

1

if(bullhorn = true)に構文エラーがあります。=は代入演算子であり、==はプリミティブの等しいかどうかをチェックします。また、if文をif(bullhorn)と書くこともできます。サイドノートでは

、まだ重要:あなたが拡声器を発見した場合は

あなたがすべきのうちbreak forループ、各要素を反復処理を続行する必要はありません。例えば

public class BullHorn { 

    public static void main(String[] args) throws IOException, Exception, RuntimeException {   
     String linkUrl = "https://www.yelp.com/biz/mega-pizza-newark?osq=pizza"; 

     Document linkClick = Jsoup.connect(linkUrl).timeout(3000).get(); 

     boolean bullhorn; 

     for(Element element : linkClick.getAllElements()) { 
      for(Attribute attribute : element.attributes()) { 
       if (attribute.getValue().equalsIgnoreCase("#30x30_bullhorn")) { 
        bullhorn = true; 
        // no need to continue looping, we've found bullhorn 
        break; 
       } 
      } 

      // no need to continue looping, we've found bullhorn 
      if(bullhorn == true) { 
       break; 
      } 
     } 

     if (bullhorn == true) { 
      System.out.println("True"); 
     } else { 
      System.out.println("False"); 
     } 
    } 
} 
+0

私はJavaにはまだまだ新しく、休憩について実際には分かっていません。今私が知っている、これは将来かなり役に立つでしょう。 –

関連する問題