2017-03-12 40 views
0

我必須在CAT1 & ACT2執行相同的操作連接兩個查詢字符串response.xpath,我有沒有誰給兩個查詢字符串傳遞到相同的XPath提取或兩者的查詢字符串相結合?如何使用scrapy

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我應該艾克這個使用? response.xpath( 「// * [@ id中= '連接控制']」 |「// * [@ id中= 'Form1中']/DIV [2]/DIV [2]/DIV [2]/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

我建議你使用CSS選擇器來代替的XPath。

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")