2017-08-06 12 views
-1

私はJSoupを通じてHTMLのh2タグからテキストを抽出しようとしていますが、何らかの理由でそれが機能していないだけです。どんな助けもありがとう、ありがとう!JSoupこのコードで何が間違っていますか?

HTMLコード:

<div id="searchTemplate" class="searchTemplate listLayout so_us_en" > 
       <div id="topDynamicContent"> 
         <div id="s-result-info-bar" class="a-row a-spacing-base searchUndoAUIHacks"><div id="s-result-info-bar-content" class="a-row"><div class="a-column a-span8 a-spacing-none"><div class="s-first-column"> 
      <h2 id="s-result-count" class="a-size-base a-spacing-small a-spacing-top-small a-text-normal">1-16 of 121 results for <span><span class="a-color-state a-text-bold">&#034;rx 390&#034;</span></span></h2></div> 

Javaコード:

Document doc = Jsoup.connect("https://www.amazon.com/s/ref=nb_sb_ss_c_1_6?url=search-alias%3Daps&field-keywords=rx+390&sprefix=rx+390%2Caps%2C166&crid=2MTUBA4KGNY06").get(); 
     String link= doc.select("div.searchTemplate.listLayout.so_us_en") 
       .select("div[id= topDynamicContent]") 
       .select("div.a-row.a-spacing-base.searchUndoAUIHacks") 
       .select("div.a-row") 
       .select("div.a-column.a-span8.a-spacing-none") 
       .select("div.s-first-column") 
       .select("h2.a-size-base.a-spacing-small.a-spacing-top-small.a-text-normal").first().text(); 
+0

詳細をお知らせください。何がうまくいかないの?どうやって?何を見ていますか?あなたは何を期待していますか? –

+0

あなたのコードは私のために働く。結果は "rx 390"の121件中1〜16件の結果です。 – saka1029

+0

これは奇妙なことですが、コードの一部が正しくなければなりませんが、私はAndroidアプリを正していますので、何か別のものが動作してはいけません。私は何を考えている。私はそれを絞り込むのを手伝ってくれてありがとう! – coolyfrost

答えて

0

あなたがAndroidアプリに取り組んでいる、コメントで私たちに語ったよう。したがって、私は自分自身を経験したいくつかの間違いがあるかもしれません。

まず、別のスレッドで実行していることを確認しましたか? Androidは、メインUI上の各NetworkThreadにThreadsを使用することでちょっと厄介です。参考のために はここを参照してください:あなたは、あなたのコード内でこのような何かを行うことができhttps://developer.android.com/reference/android/os/NetworkOnMainThreadException.html

Thread threadNet = new Thread() { 
    public void run() { 
    Document doc; 
    try { 
     doc = Jsoup.connect("https://www.amazon.com/s/ref=nb_sb_ss_c_1_6?url=search-alias%3Daps&field-keywords=rx+390&sprefix=rx+390%2Caps%2C166&crid=2MTUBA4KGNY06").get(); 
     String link= doc.select("div.searchTemplate.listLayout.so_us_en") 
       .select("div[id= topDynamicContent]") 
       .select("div.a-row.a-spacing-base.searchUndoAUIHacks") 
       .select("div.a-row") 
       .select("div.a-column.a-span8.a-spacing-none") 
       .select("div.s-first-column") 
       .select("h2.a-size-base.a-spacing-small.a-spacing-top-small.a-text-normal").first().text(); 
      System.out.print(link); 
    } catch (IOException e) { 
      e.printStackTrace(); 
    } 
    } 
}; 
threadNet.start(); 

それにもかかわらず、@ saka1029で述べたように、コードは一般的に正しいとWindowsまたはLinuxシステムの下で正常に動作しています。

+0

ええ、問題は私が別のスレッドで実行されていないということでした。ご協力いただきありがとうございます!また、クラス内でのAsyncTaskの拡張と比較して、上記のようにスレッドを実行することとの違いは何ですか?それぞれのメリットとデメリットは何ですか? – coolyfrost

+0

基本的にAsyncTaskを使用すると、UIコンポーネントを更新できます。あなたはスレッドを使って箱から出ることができません。スレッド内のUIを更新するには、ハンドラが必要です。詳細な説明はhttps://stackoverflow.com/a/25848392 – r3dst0rm

+1

です。ありがとうございました。 – coolyfrost

関連する問題