2017-09-16 174 views
0

我想獲取函數中的branchId,但是不能。你對如何從功能中獲得任何想法。Scrapy從函數中獲取文本()

item["branchId"] = row.xpath('//div[@class="branchprofile"]//script/text()').extract()[0] 

HTML代碼:

<div id="branchprofile"> 
<script> 
(function(k,v){RMVH.ANALYTICS.DataLayer.pushKV(k,v);}('branch',{"branchId":5112345,"companyName":"KLM","brandName":"London KLM",,"pageType":"Standard"})); </script> 

回答

0

您需要使用上的XPath的re方法,而不是extract。提取將只給文本

item['branchId'] = response.xpath("//div[@id='branchprofile']/script/text()").re('branchId":\s*(\d+)')[0] 
+0

謝謝。你的示例給了我一個如何使用正則表達式的看法。我有多個輸出,我寫了不同的正則表達式。 – ferdi

0

您正在使用@class,你應該使用@id

>[1]: sel.xpath("//div[@id='branchprofile']/script/text()")[0].extract() 
<[1]: '\n(function(k,v){RMVH.ANALYTICS.DataLayer.pushKV(k,v);}(\'branch\',{"branchId":5112345,"companyName":"KLM","brandName":"London KLM",,"pageType":"Standard"})); '