Андерссон уже опубликовал решение моего вопроса. Это вторая, которую я только что обнаружил, которая также работает и использует классы Scrapy, что позволяет использовать все методы, уже знакомые пользователю Scrapy (например, extract (), extract_first () и т. Д.).
text = """<div id="foo"><p id="bar">Some random text</p></div>"""
#First, we need to encode the text
text_encoded = text.encode('utf-8')
#Now, convert it to a HtmlResponse object
text_in_html = HtmlResponse(url='some url', body=text_encoded, encoding='utf-8')
#Now we can use XPath normally as if the text was a common HTML response
text_in_html.xpath(//p/text()).extract_first()