gpt4 book ai didi

python - 抓取/忽略空项目

转载 作者:太空宇宙 更新时间:2023-11-03 21:38:42 28 4
gpt4 key购买 nike

我制作了这个小机器人,它通过搜索参数列表进行处理。它工作正常,直到页面上有几个结果: product_prices_euros 给出了一半为空的项目列表。因此,当我与 product_prices_cents 连接时,我会得到如下输出:

  'price' : '',76 

获得一半结果。有没有一种简单的方法可以防止空元素被收集?我的 product_prices_euros 输出如下所示:

[' 1', ' ', ' 2', ' ', ' 2', ' ', ' 1', ' ', ' 1', ' ', ' 1', ' ', ' 2', ' ']

我只想保留“1”、“2”等...

这看起来像 CSS。这边可能有东西:

< span class="product-pricing__main-price" >
2
< span class="cents" >,79€< /span >
< /span >

我的代码:

def start_requests(self):
base_url="https://new.carrefour.fr/s?q="
test_file = open(r"example", "r")
reader = csv.reader(test_file)
for row in reader:
if row:
url = row[0]
absolute_url = base_url+url
print(absolute_url)
yield scrapy.Request(absolute_url, meta={'dont_redirect': True, "handle_httpstatus_list": [302, 301]}, callback=self.parse)


def parse(self, response):
product_name = response.css("h2.label.title::text").extract()
product_packaging = response.css("div.label.packaging::text").extract()
product_price_euros = response.css("span.product-pricing__main-price::text").extract()
product_price_cents = response.css("span.cents::text").extract()
for name, packaging, price_euro, price_cent in zip(product_name, product_packaging, product_price_euros, product_price_cents):
yield { 'ean' : response.css("h1.page-title::text").extract(), 'name': name+packaging, 'price': price_euro+price_cent}

有什么想法吗? :)

最佳答案

如果您只过滤空的欧元元素,如何将它们与正确的美分匹配?

首先,恕我直言,我认为如果你循环遍历产品来收集他们的数据会更容易。例如。

for product in response.css('.product-list__item'):
name = product.css("h2.label.title::text").extract()
# ...

因此,您可以获得如下所示的价格和美分:

>>> product.css('.product-pricing__main-price  ::text')
['2', ',99€']

>>> ''.join(product.css('.product-pricing__main-price ::text').getall())
'2,99€'

关于python - 抓取/忽略空项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53065523/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com