Мне нужно было прочитать исходные коды lxml
и BeautifulSoup, чтобы понять это.
Я публикую здесь свой собственный ответ, на случай, если кому-то еще он понадобится в будущем.
Рассматриваемая функция fromstring
определена так:
def fromstring(data, beautifulsoup=None, makeelement=None, **bsargs):
Аргументы **bsargs
заканчиваются отправкой в конструктор BeautifulSoup, который вызывается так (в другой функции, _parse
):
tree = beautifulsoup(source, **bsargs)
Конструктор BeautifulSoup определен так:
def __init__(self, markup="", features=None, builder=None,
parse_only=None, from_encoding=None, exclude_encodings=None,
**kwargs):
Теперь вернемся к предупреждению в вопросе, в котором рекомендуется добавить аргумент "html.parser" в конструктор BeautifulSoup. Согласно этому, это будет аргумент с именем features
.
Поскольку функция fromstring
будет передавать именованные аргументы в конструктор BeautifulSoup, мы можем указать синтаксический анализатор, присваивая аргумент функции fromstring
, например:
root = fromstring(clean, features='html.parser')
Пуф. Предупреждение исчезает.