かなり長い間、私の解析ニーズをすべてカバーしてきましたが、まだ開発のアイデアがあります。
このライブラリは、本質的にlxmlのラッパーであり 、これにより、操作がより快適になります。
機能
- jQueryのようなCSSセレクターへの便利なアクセス
- 要素属性への簡単なアクセス
- HTMLを他のマークアップ言語(bbcode、markdownなど)に変換する機能
- テキストを操作するためのいくつかの機能
- そしてもちろん、 lxml自体のすべての機能
説明
htmlを解析するには、その行をleaf.parseに渡す必要があります。
import leaf document = leaf.parse(sample) links = document ( 'div#menu a' ) # CSS link = document .get( 'div#menu a' ) # None ( ) * This source code was highlighted with Source Code Highlighter .
import leaf document = leaf.parse(sample) links = document ( 'div#menu a' ) # CSS link = document .get( 'div#menu a' ) # None ( ) * This source code was highlighted with Source Code Highlighter .
import leaf document = leaf.parse(sample) links = document ( 'div#menu a' ) # CSS link = document .get( 'div#menu a' ) # None ( ) * This source code was highlighted with Source Code Highlighter .
import leaf document = leaf.parse(sample) links = document ( 'div#menu a' ) # CSS link = document .get( 'div#menu a' ) # None ( ) * This source code was highlighted with Source Code Highlighter .
import leaf document = leaf.parse(sample) links = document ( 'div#menu a' ) # CSS link = document .get( 'div#menu a' ) # None ( ) * This source code was highlighted with Source Code Highlighter .
import leaf document = leaf.parse(sample) links = document ( 'div#menu a' ) # CSS link = document .get( 'div#menu a' ) # None ( ) * This source code was highlighted with Source Code Highlighter .
さらに、要素属性へのアクセスがより便利になりました。
*このソースコードは、 ソースコードハイライターで強調表示されました。
- link.onclickを印刷
- link.idを印刷
すべての標準lxmlメソッドが利用可能です(そして、それらの実行の結果として得られる要素は、ライブラリのすべての利点を保持します):
*このソースコードは、 ソースコードハイライターで強調表示されました。
- link = document .xpath( 'body / div / ul / li [@ class = "active_link"]' )[0]
- link.get( 'a' ).text
おそらく、おそらく最も興味深い機能は、htmlからbbcodeおよび他のマークアップ言語への変換です。 将来、一般的なマークアップ言語に変換するメソッドが追加されますが、現時点では、目的のメソッドの関数を非常に簡単に作成できます。
*このソースコードは、 ソースコードハイライターで強調表示されました。
- #htmlから特定のものへのコンバーター関数の例
- #サポートのみを行うマークアップ言語
- #[url] [/ url]で囲まれたリンク
- def omgcode_formatter(要素、子):
- #<br>を改行文字に置き換えます
- element.tag == 'br'の場合 :
- '\ n'を 返します
- #[url] [/ url]のリンクを突く
- element.tag == 'a'の場合 :
- return u "[url = link}] {text} [/ url]" .format(link = element.href、text = children)
- #他のすべての要素については、結果を返します
- #すべての子を処理します。
- 子供の場合 :
- 子供を返す
この関数は、要素(タグのhtml要素)と子(この要素のすべての子に対してこの関数を実行した結果)をパラメーターとして、再帰的に呼び出されます。
要素を変換するには(ところで、別のレイヤーとツリー全体の両方を使用できます):
*このソースコードは、 ソースコードハイライターで強調表示されました。
- document .parse(omgcode_formatter)
documentは、leaf.Parserクラスのオブジェクトです。
さて、テキストを操作するためのいくつかの関数:
to_unicode-文字列をUnicodeに変換する
strip_accents-文字列からアクセント、ウムラウトなどを削除する
strip_symbols-文字列からさまざまなUnicodeスペシャルを削除します。 キャラクターとか
strip_spaces-余分なスペースを削除する
strip_linebreaks-余分な改行を削除する
より詳細な例はテストにあります。
おわりに
ライブラリは次の場所にあります。