如何在Scrappy中的Xpath中添加非ascii字符

时间:2016-11-26 00:27:19

标签: python xpath unicode ascii

我有以下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

Scrapy xpath utf-8 literals

但没有人解决我的问题!

注意:使用第一个链接的解决方案,我显然已经替换了' input_string'通过让我们说word = "baños",我得到一个错误,如" 该函数有一个参数,2给出...... "

有人可以帮忙吗?

1 个答案:

答案 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()")
[]