通过xpath进行特定治疗

时间:2019-05-07 17:42:05

标签: python xpath scrapy

我想提取一个xpath字段并根据字段中包含的内容进行操作,在这种情况下,我希望我的xpath检测该字段是否包含单词,并且是否要进行X处理,否则请执行Y处理,然后将其插入我的拼凑项目

我将尝试用伪代码和我的实际xpath代码进行解释

我尝试使用.extract(),将字段作为字符串处理,然后将其插入我的项目中,但遇到了很多不同的问题,而且很混乱

#my current code
new.add_xpath('source',"substring-before(.//h3/a/@href,'?')")
#what i wanna achieve
new.add_xpath('source',if .//h3/a/@href contains "profile.php" :
                          substring-before(.//h3/a/@href,'id')
                       else :
                          substring-before(.//h3/a/@href,'?'))   

id希望提取的字段为./XXX.XXX。?。XXX(如果其中包含profile.php),如果不是./XXX.XXX,则为

1 个答案:

答案 0 :(得分:1)

我假设您是因为python而使用XPath 1.0。然后,您可以使用以下表达式直接输出所需的字符串:

substring-before(
   .//h3/a/@href, 
   concat(
      substring(
         'id',
         1 div contains(.//h3/a/@href, 'profile.php')
      ), 
      substring(
         '?',
         1 div not(contains(.//h3/a/@href, 'profile.php'))
      )
   )
)

http://www.xpathtester.com/xpath/cca4e5a85df20137b923d0b6f06bf6cc中测试

注意:像在C中一样,布尔值被强制转换为数字0(false()和1(true()),那么您可以使用扩展的实数表示( NaNInf-Inf)作为substring()函数like the examples given by the spec

的参数