使用空字符串

时间:2017-08-07 16:13:55

标签: python scrapy

我正在将items.py中定义的scrapy Item类插入到mongodb中,但我需要它来插入类的所有字段,以便将db中的这些字段添加为空。列表类下的NamePrice将始终作为空插入,但我希望保持pipelines.py清洁,以便我可以轻松切换另一个项目。目前,如果我没有将类的每个部分设置为空字符串,则在插入数据库时​​不会添加该字符串。

我是否需要将每个成员初始化为空字典?像Title = scrapy.Field({})

这样的东西

items.py

class Listing(scrapy.Item):
    Title = scrapy.Field()
    Address = scrapy.Field()
    Price = scrapy.Field()
    Name = scrapy.Field()

pipelines.py

def process_item(self, item, spider):

    # Price and Name will always be empty
    item['Price'] = ''
    item['Name'] = ''
    self.collection.insert_one(dict(item))

1 个答案:

答案 0 :(得分:0)

您可以使用scrapy的ItemLoader

from scrapy.loader import ItemLoader
from scrapy.item import Item, Field
class Listing(Item):
    title = Field()
    address = Field()
    price = Field()
    name = Field()

class MyLoader(ItemLoader):
    default_item_class = Listing

然后:

loader = MyLoader(response=response)
loader.add_xpath('title', '//some/xpath/that/finds/nothing')
loader.load_item()
# {'title': ['']}