ホームページ > ウェブフロントエンド > htmlチュートリアル > xpath を使用して html を解析するパーサー: Jsoupxpath_html/css_WEB-ITnose

xpath を使用して html を解析するパーサー: Jsoupxpath_html/css_WEB-ITnose

WBOY
リリース: 2016-06-21 09:04:54
オリジナル
1706 人が閲覧しました

JsoupXpath は、xpath を使用して HTML を解析する純粋に Java で開発されたパーサーですが、十分強力な xpath パーサーが見つからないため、JsoupXpath が開発されました。 JsoupXpath の実装ロジックは明確で、拡張が簡単で、一般的に使用されるほぼすべての xpath 構文をサポートしています

ここではフレームワーク間の比較はリストしませんが、使用後は JsoupXpath が最も強力であることがわかると思います。 1 つは現在市場にある Xpath パーサーです。

クイックスタート

Maven を使用するのが不便な場合は、lib の下にある依存関係パッケージを直接使用して実行してみることもできます。便利な場合は、次の依存関係を直接使用できます (中央の Maven ライブラリにアップロード済み)。最新バージョン 0.1.1):

http://www.cnblogs.com/ 为例"//a/@href";"//div[@id='paging_block']/div/a[text()='Next >']/@href";"//div[@id='paging_block']/div/a[text()*='Next']/@href";"//h1/text()";"//h1/allText()";"//h1//text()";"//div/a";"//div[@id='post_list']/div[position()<3]/div/h3/allText()";"//div[@id='post_list']/div[first()]/div/h3/allText()";"//div[@id='post_list']/div[1]/div/h3/allText()";"//div[@id='post_list']/div[last()]/div/h3/allText()";//查找评论大于1000的条目(当然只是为了演示复杂xpath了,谓语中可以各种嵌套,这样才能测试的更全面嘛)"//div[@id='post_list']/div[./div/div/span[@class='article_view']/a/num()>1000]/div/h3/allText()";//轴支持"//div[@id='post_list']/div[self::div/div/div/span[@class='article_view']/a/num()>1000]/div/h3/allText()";"//div[@id='post_list']/div[2]/div/p/preceding-sibling::h3/allText()";"//div[@id='post_list']/div[2]/div/p/preceding-sibling::h3/allText()|//div[@id='post_list']/div[1]/div/h3/allText()";
ログイン後にコピー

依存関係を構成したら、次の例を使用してそれを体験できます。

<dependency>   <groupId>cn.wanghaomiao</groupId>   <artifactId>JsoupXpath</artifactId>   <version>0.1.1</version></dependency>
ログイン後にコピー

他の例は cn.wanghaomiao.example パッケージにあります

文法

標準 xpath 構文をサポート (述語のネストをサポート)、一般的に使用されるすべての関数をサポート、一般的に使用されるすべての軸をサポート、いくつかの派手な関数と関数を削除標準軸については、以下で詳しく説明します。構文については、http://www.w3school.com.cn/xpath/index.asp を参照してください。

Xpath の使用に関するいくつかの注意事項

Firefox や chrome などのブラウザで生成された Xpath を直接貼り付けることはあまりお勧めできませんページをレンダリングします。たとえば、table タグは、この方法で生成された Xpath パスが最も汎用的ではないため、値が自動的に追加されない可能性があります。得られる。したがって、Xpath を使用し、Xpath の威力と、Xpath がもたらす利便性と優雅さを実感する最善の方法は、Xpath の標準構文を学習することです。これにより、さまざまな問題に簡単に対処し、Xpath の真の力を享受できるようになります。

Function

  • text() ノード自身のテキストを抽出します

  • node() すべてのノードを抽出します

  • position() 兄弟間の現在のノードの位置を返します

  • last() Return s兄弟ノードの最後のノード

  • first() 兄弟ノードの最初のノードを返します

パーサー拡張関数

  • allText() ノードの下のすべてのテキストを抽出し、同様の / /div/h3// を置き換えますtext() この再帰的なテキストの使用法

  • html() はすべてのノードの内部 HTML を取得します

  • outerHtml() はノード自体を含むすべてのノードのすべての HTML を取得します

  • num() はすべての数値を抽出しますノード自体のテキスト (つまり、子ノード以外に含まれるテキスト) に、読み取り数、コメント数、価格などの数値が 1 つしかないことがわかっている場合。 、その後、この番号を直接抽出できます。複数の番号がある場合は、最初に一致した連続番号が抽出されます。

その他の命令

  • contains(arga,argb) JsoupXpath には強力な演算子サポートがあり、完全に置き換えることができるため、この関数は一時的にサポートされていません。たとえば、 contains() の代わりに *= を使用できます。 例: //div[text()*='next']

axis

  • self ノード自体

  • parent 親ノード

  • child 直接 子ノード

  • ancestor すべての祖先ノード 父、祖父、祖父の父...

  • ancestor-or-self すべての祖先ノードと自己ノード

  • descendant すべての子孫ノード 息子、孫、孫の息子...軸 実用的な拡張

  • preceding-sibling-one 前の兄弟ノード (拡張)

  • following-sibling-one 次の兄弟ノード (拡張) に戻る 構文

  • sibling すべての兄弟 (拡張)

演算子

    これらの演算子は、ほぼすべてのニーズを満たすのに十分強力です。
  • 2 つのノード セットの和集合を返します
  • a+b 加算は数値結果を返します
  • a-b 減算は数値結果を返します

a=b それらが等しいかどうかを判断し、ブール値を返します

  • a ! =b return Boolean と等しくない

  • a>b return Boolean

  • より大きい
  • a>=b return Boolean

  • a

  • a<=b 以下 Boolean を返す

  • 演算子展開

  • a^=b string a が string b で始まるかどうか a startwith b は Boolean を返す

  • a*=b a に b が含まれるかどうか, a に b が含まれる場合は Boolean が返されます

  • a$=b a a が b で終わるかどうか a endwith b Boolean が返されます

a~=b a の内容が正規表現に従うかどうか b Boolean が返されます

その他の指示

基本的にはこれで十分ですが、その他の役に立たないものは当面サポートされません。特別なニーズがある場合は、ご連絡ください。プロジェクトのアドレス: GitHub/Jsoupxpath

プロジェクトのホームページ: http://www.open-open.com/lib/view/home/1445699703570

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート