我有以下Xpath:
bathroom = response.xpath(“.//div[1][contains(., 'Baños’)]/text()").extract_first()
我收到了这个错误:
ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters
我已尝试过在其他类似问题中提供的解决方案:
Filtering out certain bytes in python
但没有人解决我的问题!
注意:使用第一个链接的解决方案,我显然已经替换了' input_string'通过让我们说word = "baños"
,我得到一个错误,如" 该函数有一个参数,2给出...... "
有人可以帮忙吗?
答案 0 :(得分:1)
除文字Baños
外,您的代码段包含无效的文字字符串分隔符(单引号和双引号),这会导致不同的错误:
bathroom = response.xpath(“.//div[1][contains(., 'Baños’)]/text()").extract_first()
^ ^
如第二个链接所示,将整个XPath表达式转换为unicode,并修复上面指出的两个引号应该可以修复初始错误。以下作为使用lxml
的快速测试(scrapy在引擎盖下使用):
>>> from lxml import etree
>>> root = etree.fromstring('<root/>')
>>> root.xpath(u".//div[1][contains(., 'Baños')]/text()")
[]