【问题标题】:Xpath, Scrapy, printing contents from a div class, using a id?Xpath,Scrapy,使用 id 从 div 类打印内容?
【发布时间】:2020-07-08 21:17:50
【问题描述】:

以下代码示例:

<div class="accordion-content" data-tab-content="" role="tabpanel" aria-labelledby="fmh1ij-accordion-label" aria-hidden="true" id="fmh1ij-accordion">

Number of Seats:    Seventeen (17) certified seats for take-off &amp; landing - including jump seat
<br>

Forward Cabin:  Four (4) place executive club seats with pull-out tables
<br>
Mid Cabin:  Four (4) place conference group opposite three (3) place 16G divan
<br>
Aft Cabin:  Two (2) place executive club seats opposite three (3) place 16G divan
<br>
Lavatory Location(s):   Forward crew lavatory and fully enclosed aft lavatory
<br>

我需要提取 'div class=accordion-content' 下面的内容。有没有办法使用 id 来做到这一点? 'id="fmh1ij-手风琴"?

我需要提取的内容:

“座位数:十七 (17) 等。 前舱:四 (4) 个等..."

我尝试了下面的代码,但没有成功。

response.xpath("//div[contains(@id,'fmh1ij-accordion')]//text()").extract()

【问题讨论】:

    标签: html python-3.x xpath web-scraping scrapy


    【解决方案1】:

    由于我们正在处理 id 标签,因此无需使用 contains,您应该在 XPath 中搜索与您要查找的 id 标签匹配的元素:

    response.xpath("//div[@id='fmh1ij-accordion']//text()").extract()
    

    试试上面的sn-p,如果有效,请告诉我。

    编辑

    检查源 URL 后,似乎 id 标记是动态生成的。在这种情况下,我建议按类选择元素或使用不同的 XPath。 给你两个建议:

    response.xpath('//a[contains(text(), "Interior")]/following-sibling::div//text()').extract()
    
    
    response.xpath('//li[contains(@class,"accordion-item") and contains(a/text(), "Interior")]/div//text()').extract()
    

    【讨论】:

    • 感谢您的帮助。上面的代码引发以下错误:“ValueError: XPath error: Invalid predicate in //div[@id='fmh1ij-accordion')]//text()”
    • 方括号中包含一个孤立的 ) 括号,紧随其后:@id='fmh1ij-accordion'
    • @SandstormNick 好眼尼克!我删除了括号,不再出现错误,但输出是一个空列表。我用作参考的代码:"response.xpath("//div[@id='fmh1ij-accordion']//text()").extract()"
    • @SandstormNick 不错,现在修复它,谢谢!
    • @renatodvc 它有效!我可以将“Interior”更改为需要从中提取数据以分离结果的其他名称。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2016-02-17
    • 2020-03-24
    • 2015-09-28
    • 2013-08-07
    • 2011-01-16
    • 2021-09-13
    相关资源
    最近更新 更多