1

我使用和服抓取页面,我遇到了一些结构如下的数据。

问题是所有数据都存储在一个称为元素的元素中<div class="agents-stats-seperator">,有些条目只有其中一个元素,有些最多有 4 个。

我试图抓取的每个数据中都有不同的数据,它们之间唯一的结构化差异是文本,或者:

  • 待售住宅:
  • 出租住宅:
  • 商业出售:
  • 商业出租:

我是和服,您可以选择通过 css 路径或正则表达式来定义要选择的内容。

目前我用以下定义:

div > div > div > div.agents-stats-seperator > div /^()(.*?)()$/

当它拾取所有<div class="agents-stats-seperator">元素时,这导致了一个问题,我一直坚持的是如何设置正则表达式以针对包含文本的元素Residential for sale:

我试过使用:

div > div > div > div.agents-stats-seperator > div [str="Residential to rent:"] /^()(.*?)()$/

但无济于事,有什么想法吗?


供参考这里是html的片段

    <div class="clearfix top agents-stats bg-muted">


    <div class="agents-stats-seperator">
        <div class="agents-stats-l">

                Residential for sale: 

            <strong><a href="/for-sale/branch/1-click-homes-london-19269/">14</a></strong>
        </div>
        <div class="agents-stats-c">
        Avg. asking price:
        <strong class="price">£447,143</strong>
        </div>
        <div class="agents-stats-r">
        Avg. sale listing age:
                <span>18 weeks</span>
        </div>
    </div>



    <div class="agents-stats-seperator">
        <div class="agents-stats-l">

            Residential to rent: 

            <strong><a href="/to-rent/branch/1-click-homes-london-19269/">9</a></strong>
        </div>
        <div class="agents-stats-c">
        Avg. asking rent:
        <strong class="price">£1,660 pcm</strong>
        </div>
        <div class="agents-stats-r">
        Avg. rental listing age:
                <span>3 weeks</span>
        </div>
    </div>



    <div class="agents-stats-seperator">
        <div class="agents-stats-l">
            Commercial for sale

            <strong><a href="/for-sale/commercial/branch/1-click-homes-london-19269/">1</a></strong>
        </div>
        <div class="agents-stats-c">
        Avg. asking price:
        <strong class="price">£700,000</strong>
        </div>
        <div class="agents-stats-r">
        Avg. sale listing age:
                <span>11 weeks</span>
        </div>
    </div>



    <div class="agents-stats-seperator">
        <div class="agents-stats-l">

        Commercial to let

            <strong><a href="/to-rent/commercial/branch/1-click-homes-london-19269/">1</a></strong>

        </div>
        <div class="agents-stats-c">
        Avg. asking rent:
        <strong class="price">£22,516 pa</strong>
        </div>
        <div class="agents-stats-r">
        Avg. rental listing age:
                <span>56 weeks</span>
        </div>
    </div>


</div>
4

1 回答 1

0

尝试类似:

div:nth-child(1).agents-stats-seperator > div:nth-child(1).agents-stats-l > strong > a
于 2015-11-13T15:06:47.323 回答