1

BeautifulsoupとHTMlパーサーを使用している間、タグは小文字に変換されます。しかし、LXMLパーサーを使用しながらどのように実装できますか。以下の場合、出力を出力できませんが、htmlパーサーを使用して解析すると それはうまくいきます。誰か助けてくれませんか?

html_doc = """
<html><HEAD><title>The Dormouse's story</title></HEAD>

<p class="title"><b>The Dormouse's story</b></p>
<p class="story">...</p>
"""

from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc, "xml")

print soup.head
4

1 に答える 1

5

HTMLの解析にXMLパーサーを使用しないでください。HTMLは大文字と小文字を区別しませんが、XMLは大文字と小文字を区別しません。

HTMLをうまく解析できますlxml。HTMLモードを使用するだけです。

>>> soup = BeautifulSoup(html_doc, "lxml")
>>> soup.head
<head><title>The Dormouse's story</title></head>

XMLパーサーの使用を主張する場合は、入力要素の大文字と小文字を一致させる必要があります。

>>> soup = BeautifulSoup(html_doc, "xml")
>>> soup.head
>>> soup.HEAD
<HEAD><title>The Dormouse's story</title></HEAD>

代わりにXMLを処理し、大文字と小文字を区別しない場合は、によって提供されるElementTree APIに固執し、lxmlBeautifulSoupをまったく使用しないでください。次に、正規表現XPath検索を使用する必要があります。

regexpNS = "http://exslt.org/regular-expressions"
tree.xpath('//*[re:test(., '^head$', 'i')]', namespaces={'re':regexpNS})

headこれは、大文字と小文字を区別せずに、という名前のすべての要素を検索します。

于 2013-02-21T14:41:37.297 に答える