Scrapy / item loader /如何按顺序装载物品?

时间:2014-08-10 11:48:25

标签: python-2.7 scrapy

我想废弃下面的地图坐标,我的坐标为var Data = {lat:45.000000,long:68.00000}

我可以废弃上述数据项'lng':68.0000和'lat':45.0000作为单独的项目。 并且还将它们放在一个新的键“loc”中作为'loc':{'lat':45.0000,long:68.000000}。我正在尝试将这些已删除的项目存储到MongoDb中。在Mongodb中,我需要特定顺序的'lng和'lat'值(坐标)所以Mongodb会将它们识别为Geo位置。 Mongodb首先需要'lng',然后是'lat'。

我该怎么做?有人可以帮助我吗?。

这是我的物品档案

class Citylist(scrapy.Item):
    lng = scrapy.Field()
    lat = scrapy.Field()
    loc = scrapy.Filed()

这是我的蜘蛛文件

for newlist in HtmlXPathSelector(response).select('/html/body'):  
    l = ItemLoader(item=Citylist(),response = response)
    l.add_xpath('lng', '//......text()')
    l.add_xpath('lat', '//......text()')
    l.add_value('loc', {'lng': l.get_output_value('lng'), 
                'lat': l.get_output_value('lat')})

    yield l.load_item()

我当前的出局是......

   'lng':'68.00000',
   'lat':'45.00000',
   'loc':{'lat':'45.00000','lng':'68.00000}.

1)我需要我的出局只是......

'loc':{'lng':'68.00000 ,'lat':'45.00000'}, 

我不需要......

'lng':'68.00000', 'lat':'45.00000',

作为单独的值。请告知如何做到这一点

由于

1 个答案:

答案 0 :(得分:0)

第一件事:关于如何在scrapy https://stackoverflow.com/a/25096896/2446893中正确处理嵌套数据,这是一个很好的答案 第二件事:如果订单很重要,您可以使用OrderedDict https://docs.python.org/2/library/collections.html#collections.OrderedDict

您还可以使用元组仅返回值,而不是键。