我是python的新手,并且在将某些价值或密钥排除在列表之外时遇到了一些麻烦。
当我的被删除项目输出其值时,我有时会得到这样的回报。
第一个列表:
'image_urls': [u'http://www.websites.com/1.jpg',
u'http://www.websites.com/2.jpg',
u'http://www.websites.com/3.jpg'],
现在我通过做一个更有针对性的xpath并按数字选择元素来解决这个问题[2],但我真正的问题是这些来自刮下图像的返回
第二个清单:
'images': [{'checksum': '2efhz768djdzs76dz',
'path': 'full/2efhz768djdzs76dz.jpg',
'url': 'http://www.websites.com/1.jpg'},
{'checksum': 'zadz764dhqj34dsjs',
'path': 'full/zadz764dhqj34dsjs.jpg',
'url': 'http://www.websites.com/2.jpg'}],
我使用sqlite3来存储我的其他已删除数据与item.get
item.get(' image_urls''&#39)
如何将值列表合并到字符串中或根据其排名来定位? (第一个清单)
如何使用item.get获取校验和,路径和网址的值? (第二个清单)
编辑:我还在寻找第二个问题的解决方案:
这是输出:
'images': [{'checksum': '2efhz768djdzs76dz',
'path': 'full/2efhz768djdzs76dz.jpg',
'url': 'http://www.websites.com/1.jpg'},
{'checksum': 'zadz764dhqj34dsjs',
'path': 'full/zadz764dhqj34dsjs.jpg',
'url': 'http://www.websites.com/2.jpg'}],
如何让第一个或第二个校验和进入sqlite列。 我目前使用:
item.get(' scrapy-item',''),其中spracy项表示已删除项的名称,最好是在代码示例中。
答案 0 :(得分:2)
根据排名定位
x['image_urls'][0]
合并字典值列表
>>> images
[{'path': 'full/2efhz768djdzs76dz.jpg', 'url': 'http://www.websites.com/1.jpg', 'checksum': '2efhz768djdzs76dz'}, {'path': 'full/zadz764dhqj34dsjs.jpg', 'url': 'http://www.websites.com/2.jpg', 'checksum': 'zadz764dhqj34dsjs'}]
>>> list(map(lambda x : x['url'] + '/' + x['path'], images))
['http://www.websites.com/1.jpg/full/2efhz768djdzs76dz.jpg', 'http://www.websites.com/2.jpg/full/zadz764dhqj34dsjs.jpg']
>>> list(map(lambda x : x['checksum'], images))
['2efhz768djdzs76dz', 'zadz764dhqj34dsjs']
上面的代码应该概述如何处理数组和字典之间的转换。您也可以迭代整个数组并获取您的值,但我更喜欢lambda函数。
希望这有助于我不熟悉scrapy。因此,如果您仍然不确定某事,请发表评论。
答案 1 :(得分:2)
我不完全确定你在问什么,但看起来它与scrapy无关,删除scrapy标签可能会鼓励更多人打开你的问题并给出建议。
回到你的问题,即使这个解决方案不是最佳的,根据我对你的问题的理解,它可能会给你你想要的东西:
websites_urls=[]
checksums=[]
paths=[]
whole_item=[]
for image_url in item.get('image_urls'):
for image in item.get('images'):
if image_url==image['url']:
websites_urls.append(image['url'])
checksums.append(image['checksum'])
paths.append(image['path'])
whole_item.append(image)
break