5

小さな問題、本当にここで立ち往生しています、私は何が起こっているのか理解していません、私はただウェブから通常のxhtmlを解析したいだけです、特別なことは何もありません...

エラーは次のとおりです。

 File "class/page.py", line 85, in xslParse
    doc = lxml.etree.fromstring(self.content)
    File "lxml.etree.pyx", line 2753, in lxml.etree.fromstring (src/lxml/lxml.etree.c:54647)
    File "parser.pxi", line 1578, in lxml.etree._parseMemoryDocument (src/lxml/lxml.etree.c:82764)
    File "parser.pxi", line 1457, in lxml.etree._parseDoc (src/lxml/lxml.etree.c:81562)
    File "parser.pxi", line 965, in lxml.etree._BaseParser._parseDoc (src/lxml/lxml.etree.c:78232)
    File "parser.pxi", line 569, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:74488)
    File "parser.pxi", line 650, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:75379)
    File "parser.pxi", line 590, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:74712)
    XMLSyntaxError: StartTag: invalid element name, line 1, column 2

self.contentは、http応答によって与えられる通常の文字列であり、クリーンなし、置換なし、何もありません。サーバーの応答だけです。

htmlの始まりは次のとおりです。

<!doctype html>
<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
<!--[if lt IE 7 ]> <html lang="fr" class="no-js ie6" itemscope itemtype="http://schema.org/Product"> <![endif]-->
<!--[if IE 7 ]>    <html lang="fr" class="no-js ie7" itemscope itemtype="http://schema.org/Product"> <![endif]-->
<!--[if IE 8 ]>    <html lang="fr" class="no-js ie8" itemscope itemtype="http://schema.org/Product"> <![endif]-->
<!--[if IE 9 ]>    <html lang="fr" class="no-js ie9" itemscope itemtype="http://schema.org/Product"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" class="no-js" itemscope itemtype="http://schema.org/Product"> <!--<![endif]-->
<head>......

通常のWebページ、なぜlxmlは通常の適切にフォーマットされたドキュメントを解析できないのですか?

4

1 に答える 1

14

<!doctype html>HTML構文を使用するHTML5ドキュメントであることを示します。したがって、HTML(XMLではなく)パーサーを使用する必要があります。比較のために、XMLドキュメントは。で始まる場合があり<?xml version="1.0" encoding="UTF-8"?>ます。

コメントで提案されている@unutbulxml.html.fromstring()として使用できます。

HTTP経由でページを受信する場合、XML構文を使用するHTML5ドキュメントは、たとえばHTML構文の場合application/xhtml+xmlなどの代わりにXMLメディアタイプを持っている必要があります。application/xmltext/html

于 2012-08-11T22:25:16.503 に答える