如何在python scrapy中检查项目是否为None

BAR*_*OWL 2 python scrapy

如果item['business_name']等于这个[]None。我想从查询结果中删除它。

相反,它输出这是我不想要的,我只想要具有企业名称的查询结果

'business_name': [],

这是我迄今为止所拥有的

class Item(scrapy.Item):
    business_name = scrapy.Field()
    website = scrapy.Field()
    phone_number = scrapy.Field()

class QuotesSpider(scrapy.Spider):

    def parse(self, response):
        for business in response.css('div.info'):
            item = Item()
            item['business_name'] = business.css('span[itemprop="name"]::text').extract()
            if item['business_name'] is None :
                break
            else:
                item['website']  = business.css('div.links  a::attr(href)').extract_first()
                item['phone_number'] = business.css('div.phones.phone.primary::text').extract()
                yield item
Run Code Online (Sandbox Code Playgroud)

Jan*_*Jan 5

你可以试试:

if item['business_name'] is None or len(item['business_name']) == 0:
    # delete it here
Run Code Online (Sandbox Code Playgroud)

或者把你的逻辑反过来:

if item['business_name']:
    item['website']  = business.css('div.links  a::attr(href)').extract_first()
    item['phone_number'] = business.css('div.phones.phone.primary::text').extract()
    yield item
Run Code Online (Sandbox Code Playgroud)

后者利用None一个空列表是“假的” Python,被认为是更“Pythonic”的方式。