scrapy获得标签,这要归功于先前的标签

时间:2018-11-04 18:56:37

标签: python xpath scrapy

你好,我有这个html脚本:

<div class="sc-grid-col-12">
    <div class="cldt-categorized-data cldt-data-section sc-pull-right">
        <dl>
            <dt>Nr. of Doors</dt>
            <dd>5</dd>
            <dt>Nr.of seat</dt>
            <dd>5</dd>
        </dl>
    </div>

我想基于dt值Nr获得dd值(5)。的门。

这是我正在使用的代码(这是错误的):

    start_urls = ["https://www.autoscout24.com/offers/peugeot-107-active-1hand-led-scheckheftgepflegt-tuev-au-neu-gasoline-silver-2c985ebc-5a39-4d12-bd50-605f7e9b4b58?cldtidx=13"]
    def parse(self, response):
        for quote in response.css('div.sc-grid-col-12'):
            yield {
                'portes': quote.xpath("//div[@class='cldt-categorized-data cldt-data-section sc-pull-right']//dl[dt='Nr. of Doors']//following-sibling::dd").extract(),
                  }

在我得到的输出下面:

{'portes': ['<dd>\n<a href="/lst/peugeot">Peugeot</a>\n</dd>', '<dd>\n<a href="/lst/peugeot/107">107</a>\n</dd>', '<dd>\nSilver\n</dd>', '<dd>\nMetallic\n</dd>', '<dd>\nCloth, Grey\n</dd>', '<dd>\nCompact\n</dd>', '<dd>\n3\n</dd>', '<dd>\n4\n</dd>', '<dd>\n3003/ACR\n</dd>']}

这个结果重复很多时间了!

1 个答案:

答案 0 :(得分:0)

def parse(self, response):
        for quote in response.css('div.sc-grid-col-12'):
            yield {
                'portes' = unidecode.unidecode(
        re.sub(r'\s+',' ',quote.css("div.cldt-categorized-data.cldt-data-section.sc-pull-right dl[dt='Nr. of Doors'] + dd::text").extract_first()))
            }