Xpath包含'或者'',如何处理?

时间:2017-03-17 05:36:19

标签: python xml xpath scrapy lxml

我正在使用Scrapy抓取网站,并希望废弃包含'的表格中的项目。或"

xpath = '//table/tbody/tr/td[contains(.,\"\'") or contains (.,\"\"\")]/text()'

然而,这导致:

ValueError: XPath error: Invalid expression in XPATH

还有其他办法吗? (我已尝试使用unicodes用于'和#34;但它不起作用。我也试过变量无效)

由于

1 个答案:

答案 0 :(得分:2)

当您搜索'使用"作为XPath字符串文字分隔符以避免冲突时,以及搜索"时的另一种方式:

//table/tbody/tr/td[contains(.,"'") or contains (.,'"')]/text()

现在,你的python也使用了一种字符串分隔符,例如,使用",你需要避免与XPath中的"冲突(上面的XPath)。因此,您需要使用"

来转义XPath中的每个\"
xpath = "//table/tbody/tr/td[contains(.,\"'\") or contains (.,'\"')]/text()"

或者,如果这是Scrapy,您可以使用XPath variable来指定单个&没有转义的双引号:

query = "//table/tbody/tr/td[contains(.,$single_quote) or contains (.,$double_quote)]/text()"
response.xpath(query, single_quote="'", double_quote='"').extract()