【问题标题】:How to make Python Scrapy skip css rules and html attributes如何让 Python Scrapy 跳过 css 规则和 html 属性
【发布时间】:2021-11-04 08:41:07
【问题描述】:

我有一个蜘蛛,它会从给定的 url(s) 中抓取联系方式。

工作正常,但它收集的一些数据来自页面上的 css 规则,例如某些 <svg></svg> 属性可能显示为有效数字。或者<scripts></script> 中的某些图像映射(例如404_static_desk_1920-w375@1x.jpg)可能会显示为有效的电子邮件地址。

如何让scrapy忽略某些标签并完全忽略html属性?

【问题讨论】:

    标签: python scrapy web-crawler


    【解决方案1】:

    如果您使用 CSS 选择器,可以在选择器末尾添加 :not(svg):not(script)

    例如,如果您想选择除svgscript 之外的所有元素:*:not(svg):not(script)

    如果您编辑问题并添加如何提取数据的示例,我可以进一步帮助您。

    【讨论】:

    • sel.xpath("//*[not(self::script or self::img or self::style or self::svg)]") 仍然返回内部的 svg 元素
    【解决方案2】:

    您可以在 scrapy 中使用.strip() 方法,因为它会从列表中删除空格和字符

    
    tag_name = [item.strip() for item in response.xpath('//*[contains(@class,"popular_tags")]/*[@class="app_tag"]/text()').extract()]
    
    

    或者你可以使用scrapy自带的库w3lib.html

    import w3lib.html
    output= w3lib.html.remove_tags(yourtexthere)
    print(output)
    

    【讨论】:

      猜你喜欢
      • 2011-02-23
      • 1970-01-01
      • 2019-03-17
      • 1970-01-01
      • 2014-02-01
      • 2021-12-12
      • 2014-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多