Я пытаюсь использовать LXML для проверки кусок HTML, но он жалуется, что фрагмент является недействительным, даже если он должен быть действительным:Использование LXML для Подтвердить HTML
img = """<img src="http://api.com/?data=ey&ip=1&img=1" height="1" width="1">"""
parser = lxml.etree.HTMLParser(recover=False)
lxml.etree.parse(StringIO(img), parser)
поднимает:
XMLSyntaxError: htmlParseEntityRef: expecting ';', line 1, column 37
Изменение значения &
, разделяющего части строки запроса на ;
, похоже, устраняет проблему, но это не обязательно. Использование точек с запятой - recommendation of the W3C.
Есть ли что-то, что я могу сделать, чтобы получить lxml, чтобы увидеть этот фрагмент как действительный?
Я на самом деле думаю, что LXML _requires_ согласно W3C _recommendation_ является '' . –
@AlexRothberg: Почему так должно быть? Нет рекомендации W3C, которая требует ';' в URI. Вы можете создавать свои URI согласно [стандарту URI] (http://tools.ietf.org/html/std66). Фактически, по умолчанию формы HTML GET используют '&' для разделения пар имя-значение в компоненте запроса. Ваш пример URI в порядке; вам просто нужно избегать '&', если они используются в атрибутах HTML, таких как 'href'. – unor