【问题标题】:Scrapy: Extract HTML as string inside ElementScrapy:将 HTML 提取为元素内的字符串
【发布时间】:2020-07-17 23:29:27
【问题描述】:

我想在dic 中提取 HTML。例如在这段 HTML 中:

<div id="main"><h1><xyz>Title<xyz></h1></div>

我想提取 div 内容:&lt;h1&gt;&lt;xyz&gt;Title&lt;xyz&gt;&lt;/h1&gt; 作为字符串。 使用 CSS o Xpath scrapy 选择器可以做到这一点吗?

谢谢:)

【问题讨论】:

    标签: xpath scrapy css-selectors lxml


    【解决方案1】:

    对于 XPath,使用专用函数 string():

    string(//div[@id='main']/h1/xyz)
    

    输出:“标题”

    编辑:如果您正在寻找“标题”,则输出整个路径:

    concat(concat("<",name(//*[.="Title"]/parent::*),">"),concat("<",name(//*[.="Title"]),">"),string(//*[.="Title"]),concat("</",name(//*[.="Title"]),">"),concat("</",name(//*[.="Title"]/parent::*),">"))
    

    输出:&lt;H1&gt;&lt;XYZ&gt;Title&lt;/XYZ&gt;&lt;/H1&gt;

    【讨论】:

    • 我想要的是&lt;h1&gt;&lt;xyz&gt;Title&lt;xyz&gt;&lt;/h1&gt;,而不是Title
    • 好的。使用丑陋的 XPath 1.0 解决方案编辑帖子。
    【解决方案2】:

    使用 css 选择器的解决方案是不可能的,但使用 xpath 非常简单:

    desired_str = selector.xpath("//div[@id='main']").extract()
    

    【讨论】:

    • xpath("//div[@id='main']/text()").extract() 仅用于文本内容:Title
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 2021-04-27
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    相关资源
    最近更新 更多