2017-03-17 81 views
0

我爬行使用Scrapy一個網站,並願意放棄在表中包含的項目「或」Xpath包含'或'',如何處理?

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

然而,這會導致:

ValueError: XPath error: Invalid expression in XPATH 

反正是有其他的方式來做到這一點?(我已經使用統一碼嘗試「和」,但它不工作。我也試着變量無濟於事)

感謝

+0

你忘了轉義引號之一:// table/tbody/tr/td [contains(。,\「\'\」)或contains(。,\「\」\「)]/text() – Neil

回答

2

當你海RCH爲'使用"作爲XPath字符串文字分隔符,以避免衝突,周圍的其他方法搜索時"

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

現在,您的蟒蛇也用一種字符串分隔符,例如,使用"和您需要避免與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()