代码之家  ›  专栏  ›  技术社区  ›  Mauro Gentile

scrapy:从选择器中提取属性

  •  0
  • Mauro Gentile  · 技术社区  · 7 年前

    对于初学者的问题,我很抱歉,但这让我抓狂:

    假设我有一组span元素的选择器:

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

    我需要提取两个属性,即每个跨度的数据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 回复  |  直到 7 年前
        1
  •  1
  •   stranac    7 年前

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

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

    而且 if len(id_n)!=0 and len(text_n)!=0: 最好写为 if id_n and text_n: