【问题标题】:Scraping based on "nested property"基于“嵌套属性”的抓取
【发布时间】:2018-02-16 04:58:43
【问题描述】:

在创建了几个不同的蜘蛛之后,我认为我几乎可以刮任何东西,但我遇到了障碍。

给定以下代码sn-p:

<div class="col-md-4">
    <div class="tab-title">Homepage</div>
    <p>
        <a target="_blank" rel="nofollow" 
         href="http://www.bitcoin.org">http://www.bitcoin.org
        </a>
    </p>
</div>

您将如何根据tab-title div 中的文本选择&lt;a ... &lt;/a&gt; 中的链接?

我需要这个条件的原因是因为有几个其他链接符合这个条件:

response.css('div.col-md-4 a::attr(href)').extract()

我的最佳猜测如下:

response.css('div.col-md-4 div.tab-title:contains("Homepage") a::attr(href)').extract()

感谢任何见解!先感谢您。

注意:我正在使用 Scrapy。

【问题讨论】:

    标签: css-selectors scrapy scrapy-spider


    【解决方案1】:

    使用 XPath 怎么样:

    response.xpath('//div[@class="tab-title" and contains(., "Homepage")]/..//a/@href')
    

    找到一个div,其中包含tab-title 类,其中包含Homepage,然后走到父级并在任何级别上查找a 子级。

    编辑: 使用 CSS,您应该可以这样做:

    response.css('div.tab-title:contains("Homepage") ~ * a::attr(href)')
    

    【讨论】:

    • 谢谢。您可以使用 css 选择器“升级”还是该功能仅限于 XPath 选择器?
    • 非常好,我不知道 css 选择器的 ~* 符号。如果您不介意,您能否简要解释一下他们对这个示例所做的工作?
    • 基本上它说选择div 前面的所有元素,类tab-title 并包含Homepage 字符串。查看 W3Schools 的 reference
    • 我指的是符号,但无论如何谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多