Форум сайта python.su
0
Я беру из файла id товаров и подставляю их в url запрос. Все работает,пока id в файле не становиться слишком много (около 60 000),тогда я пытаюсь циклом доставать с файла первые 400 id и делать запрос,потом следующие 400 и так до конца. Но код почему-то не работает и отправляет сразу все 60 000 id в url запрос. Помогите пожалуйста определить место ошибки. Код представлен ниже
import json import itertools import requests import pandas as pd def get_product_data(): # Читаем айдишники из файла в один большой список with open('id.json', 'r') as file: ids = [line.strip() for line in file] # Делаем из одномерного списка двумерный список каждые n элементов count = 400 ids = [ids[n:n + count] for n in range(0, len(ids), count)] # Отправляем GET и получаем результат result = [] for group in ids: payload_data = {'product_ids': ' '.join(group)} f = requests.get('https://example.com/get?', params=payload_data) if f.status_code == 200: print('Good') if 'json' in f.headers['content-type']: print('Very Good') result.append(f.json()) d = f.json() return d #разбор словарь получаемых данных def flatten_dict(d): def expand(key, value): if isinstance(value, dict): return [ (key + '.' + k, v) for k, v in flatten_dict(value).items() ] else: return [ (key, value) ] items = [ item for k, v in d.items() for item in expand(k, v) ] return dict(items) # формируем DataFrem d = get_product_data() data = d['data'] data = list(map(flatten_dict, data)) df = pd.DataFrame(data) print(df[["id","title","price","old_price","href","comments_amount","sell_status","category_id","mpath","tag.name","tag.priority"]])
Офлайн
857
Сделай функцию-генератор, которая из файла достаёт заданное число записей.
Пример функции-генератора
>>> def split_list(lst, size): ... out = [] ... for i in lst: ... out.append(i) ... if len(out) == size: ... yield out ... out = [] ... if out: ... yield out ... >>> list(split_list([1, 2, 3, 4, 5, 6, 7, 8, 9], 1)) [[1], [2], [3], [4], [5], [6], [7], [8], [9]] >>> >>> list(split_list([1, 2, 3, 4, 5, 6, 7, 8, 9], 2)) [[1, 2], [3, 4], [5, 6], [7, 8], [9]] >>> >>> list(split_list([1, 2, 3, 4, 5, 6, 7, 8, 9], 3)) [[1, 2, 3], [4, 5, 6], [7, 8, 9]] >>> >>> list(split_list([1, 2, 3, 4, 5, 6, 7, 8, 9], 4)) [[1, 2, 3, 4], [5, 6, 7, 8], [9]] >>>
Офлайн
0
С
py.user.next
Сделай функцию-генератор, которая из файла достаёт заданное число записей.Пример функции-генератора
Офлайн