Я пытаюсь добавить данные из нескольких URL-адресов, извлекая дату, заголовок, ссылку и источник из RSS-каналов на сервер MongoDB каждые 10 минут. У меня в основном два вопроса.
1. Как лучше всего добавить данные в базу данных mongodb без дубликатов значений?
2. Я получаю KeyError: 'description', когда добавляю description = (article["description"])
или когда добавляю pubdate = (article["pubDate"]
в цикле ввода. Как я могу решить это?
import feedparser
import datetime
import pymongo
import json
"""
Crawler for the RSS. Extract the information from different RSS feeds and adds them to a MongoDB server
"""
# create a dictionary of rss feeds
feeds = [
"http://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml",
'http://feeds.foxnews.com/foxnews/most-popular',
'http://www.wsj.com/xml/rss/3_7041.xml',
'http://www.wsj.com/xml/rss/3_7014.xml',
'http://www.wsj.com/xml/rss/3_7085.xml',
'http://feeds.washingtonpost.com/rss/national',
'http://rss.cnn.com/rss/cnn_topstories.rss',
'http://rss.cnn.com/rss/cnn_us.rss',
'http://feeds.feedburner.com/breitbart',
'http://www.cnbc.com/id/100003114/device/rss/rss.html',
'http://feeds.abcnews.com/abcnews/topstories',
'http://feeds.bbci.co.uk/news/rss.xml',
'https://www.wired.com/feed/',
'http://rss.upi.com/news/top_news.rss',
'http://feeds.reuters.com/reuters/topNews',
'http://rssfeeds.usatoday.com/usatoday-NewsTopStories',
]
data = []
dt = datetime.datetime.utcnow()
for source in feeds:
feed = feedparser.parse(source)
for entry in feed["entries"]:
article = json.loads(json.dumps(entry, default=str))
title = (article["title"])
link = (article["link"])
source = feed['feed']['title']
d = {
"Datetime": dt,
"Title": title,
"Link": link,
"Source": source
}
data.append(d)
print(data)
client = pymongo.MongoClient("mongodb_server")
mydb = client["master_database"]
mycol = mydb["news"]
x = mycol.insert_many(data)