Jsoupで使われているいくつかのテクニックについて

3176 ワード

使用方法の説明
CSDNでフォーマットが美しくない場合は、簡単な本に移動して読むことができます.http://www.jianshu.com/p/98568b47b6c3
公式文書ではすでにはっきり言っており、必要な知識点も多くありません.ここでは、一歩一歩どう使えばいいのか、ドキュメントを参考にすればいいのではないでしょうか.必要な知識と小さなテクニックを簡単に説明します.1.htmlの構造Docment:ページ全体Element:あるノード2.CSSセレクタcssのセレクタは熟知している(熟知していなくても大丈夫、他の解析方法もある)3.論理的な考え方htmlページは通常様々なネストであるため、頭がはっきりしている4.アドレスhttp://www.open-open.com/jsoup/parsing-a-document.htm ここは中国語のドキュメントです.カタログを見ると、あまり難点がないことがわかります.https://jsoup.org/ 公式サイトです
いくつかの小さなテクニック
Chromeでこのページのデータを捕まえるならhttps://gupiao.caimao.com/weixin/note/reader/view/53103 フレーム内のデータを取得し、Name、予想収益を取得します.
一般的な手順:
  • ブラウザでF 12を押してhtmlソースコードを表示し、このボタンをクリックして、欲しいデータをクリックします.
  • 右下の枠の中を見ます.必要なcssセレクタ構文です.
  • ページ全体の環境でデータを分析するポイント:
  • この構文は、このデータ
  • を一意に決定することができますか?
  • がリスト型のデータ(ul,ilのようなものだけではない)
  • であるか否かを判定する.
  • Jsoupにおけるアプリケーション
  • その他の問題に対応
  • 一、Nameデータ
    汎用手順の最初の2つのステップが完了すると、3番目のステップが開始されます.
  • まず、この構文がこのデータを一意に決定できるかどうかを見て、コードを測定するのが最善の方法です.セレクタが選択した後、Elementsが返されるので、sizeを見て、一意かどうかを決定することができます.Document doc = Jsoup.parse(new URL( “https://gupiao.caimao.com/weixin/note/reader/view/53103“), 6000); Elements elements = doc .body() .select(“div#doc_section.doc_section.show_foot > div.user_card.user_masthead > a.clear_fix > p.name > span”); System.out.println(elements.size());

  • はい、sizeは1で、
    #####Tip:">"この記号の左右にスペースがあります.2.このデータを唯一確定したら、後はほとんど問題ありません.first()に接続して値を取ります.
        Element element = doc
                    .body()
                    .select("div#doc_section.doc_section.show_foot > div.user_card.user_masthead > a.clear_fix > p.name > span")
                    .first();
            String text = element.text();
            System.out.println(text);
    

    これで最初のデータを手に入れました
    二、予想収益
  • 分析するか、それともそのテクニックか、右下のcssセレクタをコードに入れて確認します.Document doc=Jsoup.parse(new URL(「https://gupiao.caimao.com/weixin/note/reader/view/53103“), 6000); Elements elements=doc.body().select(“div#doc_section.doc_section.show_foot > div.note_detail > div.grid > p.font_red”);System.out.println(elements.size()
    データの近くとこのページを観察します.
    左のこのボックスを観察して、私たちが必要とするデータの周りに彼と同じスタイルがあることを発見して、それからコードを見て、つまり右のボックスのこの構造は1つの大きいdivの中で3つの小さいdivを含んで、しかも彼らのclassの値は同じで、前の2つの中のpラベルのclassの値も同じです.このように私たちは右下のその選択文がこれを選んだことを確定することができます2つのpラベルは、私たちが必要とするのは後ろのものなので、jsoupではlast()で決定することができ、これによって私たちが必要とするデータの位置を唯一決定することができます.
    Document doc = Jsoup.parse(new URL(
                    "https://gupiao.caimao.com/weixin/note/reader/view/53103"),
                    6000);
            Element element = doc
                    .body()
                    .select("div#doc_section.doc_section.show_foot > div.note_detail > div.grid > p.font_red")
                    .last();
            String text = element.text();
            System.out.println(text);
    

    Tip:このデータはリスト型で、セレクタ選択後first()、last()またはget(int)でデータの位置を選択できます
    まとめ
    jsoup自体は難しくありません.正確に分析するには、ページ全体の環境でデータを確定する必要があります.間違ったデータをコードに入れて測定することができます.どんなに複雑なhtmlでも同じ論理です.
    終わりの言葉
    まあ、1時間以上前に長々と書いていましたが、結局保存されていないのか、どうやって発表できなかったのか、またたくさんのくどいところを省いて、全体的には少しくどいですが、実は分析の過程です.クズ文を書いて、あなたに役に立つことを望んでいます.