我使用LXML的html5parser 也沒關係使用ASCII字符,但如果我下載它有它裏面波斯語和俄語字符的HTML文件時,會出現此錯誤:lxml.html5parser:不工作的阿拉伯/波斯html5s
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 418: ordinal not in range(128)
這是響應文本:http://paste.ubuntu.com/23552349/
,這是我的代碼(如你所見,我只去除了所有非有效的XML字符):
f = requests.post('http://www.example.com/getHtml.php?', headers=headers, cookies=cookies, data=data)
resp = f.text
if resp == "":
return []
resp = encode("utf-8")
resp = ''.join(c for c in resp if valid_xml_char_ordinal(c))
doc = html5parser.fragment_fromstring(resp.encode("utf-8"), guess_charset=False, create_parent='div')
如果刪除的行:RESP =編碼( 「UTF-8」)將出現這種錯誤:
ValueError異常:所有字符串必須是XML兼容:Unicode或ASCII,沒有空字節或控制字符
懶惰的白癡與鼠標光標準備在-1:這不是重複的:)) –
我不明白你爲什麼編碼響應utf-8。如果您只將響應作爲unicode提供給fragment_fromstring,會發生什麼? –
@StephaneMartin如果你沒有,你會得到useChardet錯誤! –