2017-03-12 4 views
0

cat1で同じ操作を実行する必要があります& act2、両方のクエリ文字列を同じXpath抽出プログラムに渡すか、両方のクエリ文字列を組み合わせるのですか?2つのクエリ文字列をレスポンスで使用する方法

cat1 = response.xpath("//*[@id='linkControl']") 
cat2=response.xpath("//*[@id='form1']/div[2]/div[2]/div[2]/div/div[*]/a") 
+1

またはオペレータを '|'正規表現で – stamaimer

+0

HTMLコードを投稿 –

+0

@stamaimer私はこれをlkeに使うはずですか?response.xpath( "// * [@ id = 'linkControl']" | "// * [@ id = 'form1']/div [2]/div [2]/div/div [*]/a ") –

答えて

1

XPathはあなたが使用することができますunion operator|)が使用結合する:

xpath1 = "//*[@id='linkControl']" 
xpath2 = "//*[@id='form1']/div[2]/div[2]/div[2]/div/div[*]/a" 
result = response.xpath(xpath1 + " | " + xpath2) 
を使用でき
+0

はい、うまくいきました! –

+0

Firebugでテストするとうまくいきますが、scrapyコードではxpath1にのみ対応しています。 提案はありますか? –

1

Xpathの代わりにCSSセレクタを使用することをお勧めします。

cat1 = response.xpath("#linkControl") 
cat2=response.xpath("#form1 div::nth-child(2) div::nth-child(2) div::nth-child(2) div div a") 

両者,(commma)

cat1 = response.xpath("#linkControl, #form1 div::nth-child(2) div::nth-child(2) div::nth-child(2) div div a") 
cat2=response.xpath("#linkControl, #form1 div::nth-child(2) div::nth-child(2) div::nth-child(2) div div a") 
関連する問題