#python #arrays #json #serialization
#python #массивы #json #сериализация
Вопрос:
Я пишу веб-скребок, который получает a car_id
и все его изображения:
car_id = 12345
images = []
image_list = self.driver.find_elements_by_css_selector('.carousel-inner a img')
for img in image_list:
img_url = img.get_attribute('src')
if img_url:
images.append(img_url)
Результатом программы является объект json, содержащий car_id и список его изображений… но как мне сериализовать массив python в следующий объект json?
item = {
'car_id': car_id,
'images': ["img1", "img2", ...] # serialize images array
}
Ответ №1:
car_id = 12345
images = ['url1', 'url2', 'url3'] #list of image urls
item = {
'car_id' : car_id,
'images' : images
}
item
Dict можно редактировать с помощью
item['images'].append('url4')
Если вместо этого список изображений содержит фактические объекты изображения (сериализованные в байты или какой-либо другой формат), то images
список может содержать эти объекты.
Переменная item
будет иметь тип dict
в python. Этого может быть достаточно для вашего варианта использования. Если нет, то вы можете преобразовать его в строку json.
import json
result = json.dumps(item)
result
будет иметь требуемую строку json.
Ответ №2:
инициализируйте элемент, затем используйте item['images'].append(img_url)
items = []
for id in listID:
item = {
"car_id": id, # 12345
"images" = []
}
image_list = self.driver.find_elements_by_css_selector('.carousel-inner a img')
for img in image_list:
img_url = img.get_attribute('src')
if img_url:
item['images'].append(img_url)
items.append(item)
print(items)
'''
[{
'car_id': 12,
'images': ["img1", "img2", ...]
},
{
'car_id': 23,
'images': ["img1", "img2", ...]
}]
'''