Python 如何在每个标记的xpath中只获取一个元素?

Python 如何在每个标记的xpath中只获取一个元素?,python,xpath,scrapy,Python,Xpath,Scrapy,我试图从网站中提取属性,但得到的是空元素 在srapy shell中使用此代码: fetch('https://www.chronext.de/breitling/galactic/w7234812-a785-249s-a12d-4/C79467') from w3lib.html import remove_tags [remove_tags(w).strip() for w in response.xpath('//table[@class="compact margin-top-half

我试图从网站中提取属性,但得到的是空元素

在srapy shell中使用此代码:

fetch('https://www.chronext.de/breitling/galactic/w7234812-a785-249s-a12d-4/C79467')

from w3lib.html import remove_tags
[remove_tags(w).strip() for w in response.xpath('//table[@class="compact margin-top-half"][1]/tr/td[2]/text()').extract()]
我得到:

['C77316', '279175', 'Damen', 'Automatik', '28\xa0mm', 'Roségold', 'Roségold', 'Saphirglas', '', '', '', '2018', 'Originale Box', 'Originale Hersteller Papiere', 'CHRONEXT Echtheitszertifikat', 'Zusätzlich zur Herstellergarantie erhalten Sie eine 2-jährige CHRONEXT Garantie ab Kaufdatum.']
这是令人惊讶的,因为我用/div[2]瞄准了第二个框,但却收到了来自这两个框的元素

我也试过:

[x.strip() for x in response.xpath('//div[@class="row force-inside-container-behavior"]/div[2]/table/tr/td[2]/text()').extract()]
其中返回以下内容:

['', '', '', '2018', 'Originale Box', 'Originale Hersteller Papiere', 'CHRONEXT Echtheitszertifikat', 'Zusätzlich zur Herstellergarantie erhalten Sie eine 2-jährige CHRONEXT Garantie ab Kaufdatum.']
我的目标是得到一个键/值对字典。例如,“条件”=“良好”。第一个盒子没有问题,然后我想让我们分别得到第二个盒子并扩展列表

键不是问题所在,但我尝试获取的值返回那些3-4个空元素,一旦我稍后将键/值拉到一起,这些元素将导致顺序不同步。删除3个空字段可能不是一个好的选择,因为此站点上的另一个页面可能略有不同


如何才能每个键值只获取一个元素?

是否要提取这些规范

这是从specs表中提取键值对的100%工作代码

specs = {}
for td in response.css(".specifications .col.s12.l5")[0].css("tr"):
    specs[td.css("td")[0].css("::text").extract_first()] = td.css("td")[1].css("::text").extract_first()

{u'Uhr f\xfcr': u'Damen', u'Glas': u'Saphirglas', u'Artikel\xadnummer': u'C79467', u'Gr\xf6\xdfe (Geh\xe4use)': u'29\xa0mm', u'Material (Geh\xe4use)': u'Edelstahl', u'Werk': u'Quarz', u'Armband': u'Kautschuk', u'Referenz': u'W7234812.A785.249S.A12D.4'}

有趣的故事。不过,我没有得到任何结果:>>>specs={}>>td-in-response.css(“.specifications.col.s12.l5”)[0]。css(“tr”):。。。规范[td.css(“td”)[0].css(“::text”).extract_first()]=td.css(“td”)[1].css(“::text”).extract_first()…>>我可以在scrapy shell中执行此操作吗?你得到了什么?是的,我在scrapy shellNothing中执行了代码。我刚刚收到提示:>>>>LOL,看起来您是第一次这样做,首先为td写
,作为响应。css(“.specifications.col.s12.l5”)[0]。css(“tr”):
,然后写下一行,然后按enter键两次。。。我建议创建一个项目,而不是通过scrapy shell运行它:-)没有太多经验,你是对的。不过我是这样做的。没有结果,只是提示。