次のように、Unicode 文字を含む Web ページから HTML を抽出しています。
def extract(url):
""" Adapted from Python3_Google_Search.py """
user_agent = ("Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) "
"AppleWebKit/525.13 (KHTML, like Gecko)"
"Chrome/0.2.149.29 Safari/525.13")
request = urllib.request.Request(url)
request.add_header("User-Agent",user_agent)
response = urllib.request.urlopen(request)
html = response.read().decode("utf8")
return html
ご覧のとおり、正しくデコードしています。html
Unicode 文字列もそうです。HTML を印刷すると、Unicode 文字が表示されます。
私はhtml.parser
HTMLを解析し、それをサブクラス化するために使用しています:
from html.parser import HTMLParser
class Parser(HTMLParser):
def __init__(self):
## some init stuff
#### rest of class
クラスの を使用して HTML を解析handle_data
すると、Unicode 文字が削除されたり、突然消えたりするように見えます。ドキュメントには、エンコーディングについては何も言及されていません。HTML パーサーが非 ASCII 文字を削除するのはなぜですか? また、そのような問題を修正するにはどうすればよいですか?