scrapy:从选择器中提取属性

时间:2018-03-18 22:37:52

标签: python scrapy

对于初学者的问题我很抱歉,但这让我发疯了:

想象一下,我将这个选择器放到一组span元素中:

ori=response.xpath("//div[@class='comparison- 
  row']//div[contains(@class,'modern- 
  translation')]//span[contains(@class,'line-mapping')]")

我需要提取2个属性,即数据ID和每个范围的文本

我做:

for r in ori:
    id_n=r.xpath("@data-id").extract()
    text_n=r.xpath("/text()").extract()
    if len(id_n)!=0 and len(text_n)!=0:
       ids.append(id_n)
       text.append(text_n)

但是以下内容会返回错误:

text_n=r.xpath("/text()").extract()

我试过了:

for r in ori:
    n=r.extract()
    print(n) 

我有这个输出:

我将待在家里,为你的尝试祈求上帝的祝福。  明天离开,并确保这一点:我可以帮助你的任何事情,你应该有。

我需要提取每个文本

1 个答案:

答案 0 :(得分:1)

您需要相对于当前元素创建xpath表达式:

text_n = r.xpath("./text()").extract()

另外,if len(id_n)!=0 and len(text_n)!=0:最好写成if id_n and text_n: