【问题标题】:Scrapy Xpath Selector returning partial textScrapy Xpath 选择器返回部分文本
【发布时间】:2020-12-10 18:04:52
【问题描述】:

我在p 标记中有一些文本,其中可能包含其他标记,例如em。 当我将以下文本传递给 parsel XPath 选择器并询问第一个 p 标记时,它会返回部分字符串。

  from parsel import Selector

  selector = Selector(text="<div><p>Hel<em>l</em>o</p><p>World!</p></div>")

  for p in selector.xpath('(//div//p//extract())[1]'):
    print(p.get())

代码返回的输出是

Hel 并且预期的输出是hello,我在这里做错了什么。

【问题讨论】:

    标签: python scrapy html-parsing parsel


    【解决方案1】:

    我相信您正在寻找这样的东西:

    from parsel import Selector
    
    selector = Selector(text="<div><p>Hel<em>l</em>o</p><p>World!</p></div>")
    
    for p in selector.xpath('//div/p[1]/descendant-or-self::*/text()'):
      print(p.get())
    
    # OR
    print("".join([x.get() for x in selector.xpath('//div/p[1]/descendant-or-self::*/text()')]))
    

    根据您要完成的工作,您可能希望避免 xpath 中的双斜杠。见Working with relative XPaths

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-07
      • 1970-01-01
      • 1970-01-01
      • 2016-12-02
      • 2020-04-23
      • 2016-03-12
      • 1970-01-01
      • 2019-12-30
      相关资源
      最近更新 更多