私は、lxml HTML
パーサーを使用して、同僚がWebサイトのランダムサンプルから取得したHTMLを解析するPythonコードを使用しています。
そのうちの2つで、フォームのエラーが発生します
"'utf8'コーデックは位置502のバイト0xe20x80をデコードできません:データの予期しない終了"、
UTF-8
HTMLコンテンツに破損した文字が含まれています。
eleと呼ばれるコード内の変数は、不正な文字でテキストを囲む<p>要素に割り当てられ、そのテキストにはele.textを介してアクセスできます。または、可能性がありますが、ele.textを別の変数に割り当てるだけで、が発生UnicodeDecodeError
します。例外句で使用できるタイプのオブジェクトにUnicodeDecodeError
は、テキスト内の不良バイトの開始位置と終了位置など、いくつかの有用な属性が含まれています。これを使用して、不良バイトが削除された新しい文字列を作成できますが、 ele.textのサブストリングを取得するなど、ele.textに何かを加えると、newUnicodeDetectError
が発生します。の良い部分を救うために私にできることはありele.text
ますか?
私はこれをメモリから書いていますが、コードの詳細をすべて覚えているわけではないので、役立つ場合は明日より多くの情報を提供できます。私が覚えているのは、eleはのようなタイプのオブジェクトであり、lxml._Element
解析されるファイルは実際にはにあり、ファイル内には、エンティティ&rdquo;に一致する文字のutf-8
最初の2バイトがある場所があります。utf-8
エンティティ&rdquo;が続きます。したがって、テキストには。が含まれます"xE2x80&rdquo;"
。エラーメッセージは、について文句を言い、"xE2x80"
約520文字を含む文字列内での位置を示します。必要に応じて文字列全体を破棄することもできますが、位置情報を使用して"xE2x80"
。何らかの理由で、ele.textを使用して何かを実行すると、lxmlの下位レベルのCythonコードでエラーが発生します。明日、仕事中にスタックトレースを提供できます。そのテキストで何かできることはありますか?ありがとう。