2017-03-17 9 views
0

私はXpathに 'または' 'が含まれていますが、どのように処理するのですか?

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

をScrapyを使用してウェブサイトをクロールしていますし、含まれているテーブル内の項目をスクラップしたい」または「

しかし、これはにつながる:

ValueError: XPath error: Invalid expression in XPATH 

はとにかくに他の方法があります?これを行う

おかげ

+0

あなたが忘れてしまいました// table/tbody/tr/td [(。、\ "\ '\")を含むか、(。、\ "\" \ ")]/text() – Neil

答えて

2

あなたの海(私はのためにユニコードを使用してみました "と"しかし、それは動作しません。また、私は無駄に変数を試してみました) XPath文字列の競合を避けるために、リテラルの区切り文字、および他の方法で回避として'使用"ためのRCH "を検索:今すぐ

//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() 
関連する問題