【问题标题】:Extracting text within em tag in scrapy在scrapy中提取em标签内的文本
【发布时间】:2016-01-10 08:40:58
【问题描述】:

所以我在scrapy shell中,我尝试的选择器之一产生了这个:

>>> response.css(".result-title a").extract()
[u'<a href="#"><em>Membership warehouse</em></a>', u'<a href="#">Publix</a>', u'<a href="#">Kroger Pharmacy</a>']

现在只获取我这样做的文本:

>>> response.css(".result-title a::text").extract()
[u'Publix', u'Kroger Pharmacy']

很明显,这省略了第一个元素,它在文本周围有一个额外的 em 标签。我如何将它与普通文本一起提取,以便我的最终输出是:

[u'Membership warehouse', u'Publix', u'Kroger Pharmacy']

【问题讨论】:

    标签: python scrapy


    【解决方案1】:

    我会在a 中找到任何级别的所有文本节点并“加入”它们:

    for a in response.css(".result-title a"):
         print("".join(a.xpath(".//text()").extract()))
    

    演示:

    $ cat index.html 
    <div class="result-title">
        <a href="#"><em>Membership warehouse</em></a>
        <a href="#">Publix</a>
        <a href="#">Kroger Pharmacy</a>
    </div>
    $ scrapy shell index.html
    In [1]: for a in response.css(".result-title a"):
        print("".join(a.xpath(".//text()").extract()))
       ...:     
    Membership warehouse
    Publix
    Kroger Pharmacy
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-24
      • 1970-01-01
      • 2017-03-07
      • 2021-01-09
      • 1970-01-01
      • 2013-03-16
      • 1970-01-01
      • 2023-03-05
      相关资源
      最近更新 更多