Python Scrapy 无法从每个 div 中获取每个 class 名称及其值

Python Scrapy unable to get each class name with its value from each div

我正在尝试从每个 div 列表中获取每个 class 名称及其对应的值。

从这个页面:https://www.dotproperty.id/en/properties-for-sale/riau-islands/batam?page=1

这是 class 名称和值的 html:

<ul class="list-inline">
<li><i class="icon icon-bedroom"></i> <span>3</span></li>
<li><i class="icon icon-dp-icon-24"></i> <span>2</span></li>
<li><i class="icon icon-dp-icon-26"></i> <span>100 m<sup>2</sup></span></li>
</ul>

到目前为止,我得到的最接近的是它使用 getall() 并排打印每个 classes 及其值。但是,它给了我整个页面。

for e in response.css('div.description-block'):
     for item in e.xpath('.//ul[@class="list-inline"]'):
         print(item.xpath('.//li/i/@class | .//li/span/text()').getall())

输出:

['icon icon-bedroom', '3', 'icon icon-dp-icon-24', '2', 'icon icon-dp-icon-26', '100 m']
['icon icon-bedroom', '2', 'icon icon-dp-icon-24', '1']
['icon icon-bedroom', '6', 'icon icon-dp-icon-24', '5', 'icon icon-dp-icon-26', '198 m']
['icon icon-bedroom', '4', 'icon icon-dp-icon-24', '5', 'icon icon-dp-icon-26', '450 m']
['icon icon-dp-icon-26', '336 m', ' ']

尝试 get() 给出每个 div 的第一个 class 名称:

icon icon-bedroom
icon icon-bedroom
icon icon-bedroom
icon icon-bedroom
icon icon-dp-icon-26
(and so on ...)

我希望每个循环的输出看起来都一样。

['icon icon-bedroom', '3', 'icon icon-dp-icon-24', '2', 'icon icon-dp-icon-26', '100 m']

好的,所以我解决了我的问题。基本上,我只需要在图标容器内迭代并通过名称区分每个图标。

在循环中循环。 :)

for a in accommodation:
        class_name = a.xpath('.//i/@class').getall()
        value = a.xpath('li/span/text()').getall()
        for name,val in zip(class_name,value):
            if 'bedroom' in name:
                bedrooms = val
            else:
                pass
            if 'icon-24' in name:
                bathrooms = val
            else:
                pass
            if 'icon-26' in name:
                land = val
            else:
                pass