pavelcarcass
@pavelcarcass
ИТ-менеджер из г. Иркутска

Почему мой Телеграм-бот не хочет парсить эту RSSку?

Всем привет! Воспользовался простеньким ботом отсюда, немножко модифицировал код, чтобы бот не постил лишнего в канал. Вот мой код (заменил на хххххх всякие токены и прочее, что не нужно публиковать, оставил адрес RSSки) :
import pickle
import feedparser
import telegram
from time import sleep

feed_list =["http://baikalinform.ru/obyavki-rss",
            ]

last_feeds = pickle.load(open("/home/xxxxx/xxxxxx/db.p", 'rb'))
fee_links = []

bot = telegram.Bot(token='xxxxxxxxxxxxxxxx')

print(last_feeds)
print("-----Last feeds---")

def feederek():
    for i in feed_list:
        fee = feedparser.parse(i)
        fee_title = fee.feed.title
        for x in range(10):
            fee_links.append(fee['entries'][x]['id'])
            if fee['entries'][x]['id'] in last_feeds:
                print("Nothing new - " + fee_title)
            else:
                sleep(5)
                entry_title = fee['entries'][x]['title']
                entry_id = fee['entries'][x]['id']
                print("Updated - " + fee_title)


                message = str(entry_title +"\n" + entry_id)
                bot.sendMessage(chat_id="@xxxxxxxxxxx", text=message)

    pickle.dump(fee_links, open("/home/xxxxx/xxxxxx/db.p", 'wb'))
    return

feederek()

До этого я уже успешно использовал этот же код, всё работает хорошо. А при попытке парсить эту RSSку, которая в вышепредставленном коде, вываливает ошибку:
-----Last feeds---
Traceback (most recent call last):
  File "feederek.py", line 38, in <module>
    feederek()
  File "feederek.py", line 22, in feederek
    fee_links.append(fee['entries'][x]['id'])
  File "/home/xxxxxx/.local/lib/python3.5/site-packages/feedparser.py", line 357, in __getitem__
    return dict.__getitem__(self, key)
KeyError: 'id'

Мой выхлоп pip3 list:
certifi (2017.7.27.1)
chardet (2.3.0)
command-not-found (0.3)
feedparser (5.2.1)
future (0.16.0)
language-selector (0.1)
pip (8.1.1)
pycurl (7.43.0)
pygobject (3.20.0)
python-apt (1.1.0b1)
python-debian (0.1.27)
python-systemd (231)
python-telegram-bot (8.1.1)
requests (2.9.1)
setuptools (20.7.0)
six (1.10.0)
ssh-import-id (5.5)
telegram (0.0.1)
ufw (0.35)
unattended-upgrades (0.1)
urllib3 (1.13.1)
wheel (0.29.0)
You are using pip version 8.1.1, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

Прошу помощи, чтобы разобраться, как решить эту проблему. Спасибо.
  • Вопрос задан
  • 668 просмотров
Решения вопроса 1
pavelcarcass
@pavelcarcass Автор вопроса
ИТ-менеджер из г. Иркутска
Проблема решена. В RSSке отсутствовали рекомендованные валидатором тэги <guid>...</guid>.

Когда добавил в RSSку эти тэги, парсинг заработал.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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