2017-09-16 170 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"})); '