@Oyaseo
beginner programmist

Что я делаю не так?

Добрый вечер, сижу пишу сложный парсер и запоролся на самом лёгком. Не могу открыть словарик :( и не понимаю в чём проблема... Код - pastebin.com/qmRmQA5C
а вот что получаю:
dmitry@dmitry-SATELLITE-C660:~/Documents/myproject/wine$ python3 parser.py 
['http://rt44.ru/tizers/5I2G', 'http://rt44.ru/tizers/9HHS', 'http://rt44.ru/tizers/R6OH', 'http://rt44.ru/tizers/649X', 'http://rt44.ru/tizers/VQ1Q', 'http://rt44.ru/tizers/TTXA', 'http://rt44.ru/tizers/IPNH', 'http://rt44.ru/tizers/9M6I']
{'http://tovaripohudeniya.ru/night-snack': ['http://rt44.ru/tizers/5I2G', 'http://rt44.ru/tizers/9HHS', 'http://rt44.ru/tizers/R6OH', 'http://rt44.ru/tizers/649X', 'http://rt44.ru/tizers/VQ1Q', 'http://rt44.ru/tizers/TTXA', 'http://rt44.ru/tizers/IPNH', 'http://rt44.ru/tizers/9M6I']}
Traceback (most recent call last):
  File "parser.py", line 89, in <module>
    main()
  File "parser.py", line 75, in main
    if(one['{0}'.format(two)]!=0):
KeyError: 'http://tovaripohudeniya.ru/night-snack'
  • Вопрос задан
  • 279 просмотров
Пригласить эксперта
Ответы на вопрос 4
Djaler
@Djaler
Сеньор-помидор
get_img возвращает список, а вы пытаетесь использовать его как словарь
Ответ написан
Комментировать
angru
@angru
вам бы питон подучить, я такого кода вообще никогда не видел.

import json
from pprint import pprint
from collections import defaultdict

import requests


BASE_URL = 'http://rt44.ru/rotator.php'


def get_context_ajax(html):
        headers = {
            'Origin': 'http://tovaripohudeniya.ru',
            'Accept-Encoding': 'gzip, deflate',
            'Accept-Language': 'en-US,en;q=0.8,ru;q=0.6',
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',
            'Accept': '*/*',
            'Referer': 'http://tovaripohudeniya.ru/',
            'Connection': 'keep-alive',
            'Content-Length': '0',
            'Cache-Control': 'max-age=0',
        }

        r = requests.post(html, headers=headers)
        
        if r.ok:
            return json.loads(r.text)
    
        return []


if __name__ == '__main__':
    content = get_context_ajax(BASE_URL)
    img_info = {}

    if content:
        imgs = {item['img_path'] for item in content}

        for item in content:
            img_info[item['bot_text']] = imgs.difference([item['img_path']])

    pprint(img_info)


это конечно если я все правильно понял, остальное вообще не нужно.

P.S. если это фриланс - пожалейте себя и заказчика, откажитесь, подтяните питон в частности и программирование в целом.
Ответ написан
Комментировать
@vilgeforce
Раздолбай и программист
Словарь не содержит ключа "'{0}'.format(two)", предлагаю в связи с этим заняться вам отладкой вашего кода хотя бы через печать оного несчастного словаря перед обращением к нему.
Ответ написан
Комментировать
@Oyaseo Автор вопроса
beginner programmist
Но в выдаче я получаю первый элемент, всё ок. А дальше всё ломается(
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы