問題タブ [iterparse]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2682 参照

python - `pythons etree.iterparse()` を使用した巨大な xml ファイルの解析が正しく機能しません。コードに論理エラーがありますか?

巨大なファイル xml-file を解析したい。この巨大なファイルのレコードは、たとえば次のようになります。そして、一般的に、ファイルは次のようになります

このファイルから録音を選択するためのコードをいくつか書きました。

コードを実行すると (MySQL データベースへの保存を含めて 50 分近くかかります) 、100 万近くの作成者がいると思われるレコードがあることに気付きます。これは間違っているに違いありません。ファイルを調べて、ファイルにエラーがないことを確認しました。この論文の著者は 5 人か 6 人しかいないので、dblp.xml については問題ありません。したがって、コードに論理エラーがあると想定しています。しかし、これがどこにあるのかわかりません。おそらく、エラーがどこにあるのか、誰かが教えてくれますか?

コードは行で停止しますif len(auth) > 2000

編集:

この関数を書いたとき、私は完全に見当違いでした。私は見落として大きな間違いを犯しました. ファイルのある時点で、100 万近くのレコードを連続してスキップしたところ、次の必要なレコードが爆破されました。

John と Paul の助けを借りて、なんとかコードを書き直すことができました。現在解析中であり、うまく処理できるように継ぎ目があります。予期しないエラーが解決されない場合は、また報告します。それ以外の場合は、ご協力いただきありがとうございます。本当に感謝しています!

0 投票する
2 に答える
651 参照

python - lxml.etree.iterparse は入力ファイル ハンドラを閉じますか?

filterous は、単体テストで単純なXMLオブジェクトを解析するために使用 しています。ただし、後でオブジェクトにアクセスしようとすると、Python は " " メッセージで終了します。ドキュメントによると、「lxml 2.3 以降では、.close() メソッドもエラーの場合に呼び出されます」とのことですが、エラー メッセージや. 私のIO-fooは明らかに速度が遅いので、誰か提案がありますか?iterparseStringIOStringIOValueError: I/O operation on closed fileiterparseExceptioniterparse

コマンドと (できれば) 関連するコード:

setup.py:

テスト/tests.py:

filterous/filterous.py:

トレースバック:

PS: 2010-07-27のテストはすべて正常に実行されました。

0 投票する
2 に答える
3517 参照

python - Pythonのlxml iterparseは名前空間を処理できません

名前空間をルート ノードに追加するまでは問題なく動作します。回避策として何ができるか、またはこれを行う正しい方法についてのアイデアはありますか? ファイルが非常に大きいため、イベント駆動型にする必要があります。

0 投票する
1 に答える
4219 参照

python - PythonlxmlとIterparseを使用した大きなXMLファイルの解析

lxmlとiterparseメソッドを使用してパーサーを作成し、多くの項目を含む非常に大きなxmlファイルをステップスルーしようとしています。

私のファイルの形式は次のとおりです。

これまでのところ、私の解決策は次のとおりです。

それを実行すると、次のようなものが得られます。

空白のセットは、urlタグの子であるアイテムタグも取得するためであり、xpathで抽出する説明フィールドがないことは明らかです。私の望みは、各項目を1つずつ解析してから、必要に応じて子フィールドを処理することでした。私はlxmlライブラリを学んでいるだけなので、サブアイテムを残したままメインアイテムを引き出す方法があるかどうか知りたいのですが。

0 投票する
2 に答える
3245 参照

python - lxmlを効率的な方法で使用して、ネストされた要素を持つこの巨大なXMLファイルを解析するにはどうすればよいですか?

XMLminidomを使用してこの巨大なXMLドキュメントを解析してみました。サンプルファイルでは正常に機能しましたが、実際のファイル(約400 MB)を処理しようとするとシステムが停止しました。

xmlファイルのcodereviewからコード(一度にメモリ内のロードではなくストリーミング方式でデータを処理する)を適応させようとしましたが、要素のネストされた性質のためにデータセットを分離するのに問題があります。以前は単純なXMLファイルに取り組んでいましたが、このようなメモリを大量に消費するタスクには取り組みませんでした。

これは正しいアプローチですか?在庫IDと出版社IDを各書籍に関連付けるにはどうすればよいですか?それが私が最終的に2つのテーブルを関連付けることを計画している方法です。

フィードバックをいただければ幸いです。

book.xml

Pythonコード:

Python出力:

必要な出力(最終的にはMySQLに保存されます-今のところPythonのリスト):

0 投票する
5 に答える
3088 参照

python - HTMLを繰り返し解析します(lxmlを使用しますか?)

私は現在、使用されるメモリの量を減らすために、非常に大きなHTMLドキュメント(私は知っています..yuck)を繰り返し解析しようとしています。私が抱えている問題は、次のようなXML構文エラーが発生することです。

lxml.etree.XMLSyntaxError: Attribute name redefined, line 134, column 59

これにより、すべてが停止します。

構文エラーを抑えずにHTMLを繰り返し解析する方法はありますか?

現時点では、XML構文エラー例外から行番号を抽出し、その行をドキュメントから削除してから、プロセスを再開しています。かなり嫌な解決策のようです。もっと良い方法はありますか?

編集:

これは私が現在行っていることです:

0 投票する
5 に答える
8764 参照

python - Python(iterparse)のエンコーディングエラーを無視しますか?

私はこれと1時間戦ってきました。XML文字列を。で解析していますiterparse。ただし、データが適切にエンコードされておらず、私はそのプロバイダーではないため、エンコードを修正できません。

これが私が得るエラーです:

このエラーを単に無視して、解析を続行するにはどうすればよいですか?1つの文字が適切に保存されていなくても、データが必要なだけです。

これが私が試したもので、すべてインターネットから選んだものです。

編集:
URLはプライベートAPIであり、APIキーが含まれているため、表示できませんが、これがデータの取得方法です。

問題の原因となる文字は次のとおりです。、 &なども問題を解決åすると思います。äö

これが私がそれを解析しようとする部分です:

編集2:
これは、PHPで解析しようとするとどうなるかです。明確にするために、F***ingÅmålはドラマ映画=Dです

ファイルはで始まります<?xml version="1.0" encoding="UTF-8" ?>

これが私が得たものですprint repr(data[offset-10:offset+60])

0 投票する
0 に答える
348 参照

python - 条件付きで複数の DTD に対して lxml の iterparse を使用して Python で検証する

条件付きで、docinfo に基づいて、複数の DTD に対してかなり大きな XML (>100MB) を解析および検証しています。

私の問題はメモリ消費であるため、代わりに iterparse を使用する必要があると考えましたが、同じ種類の検証を行う方法が見つかりません。

前もって感謝します。

0 投票する
1 に答える
6002 参照

python - lxml etree.iterparseエラー「TypeError:ファイルオブジェクトの読み取りはプレーン文字列を返す必要があります」

lxmlを使用してHTMLドキュメントを解析したいと思います。私はpython3.2.3とlxml2.3.4を使用しています(http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml

を使用しetree.iterparseてドキュメントを解析していますが、次の実行時エラーが返されます。

問題は、このランタイムエラーをどのように解決するかです。

どうもありがとうございます。

コードは次のとおりです。