当前位置:   article > 正文

【Python 机器学习实战】朴素贝叶斯

prepare_for_training.py

一、基于贝叶斯决策理论的分类方法

  • 优点:在数据较少的情况下仍然有效,可以处理多类别问题。
  • 缺点:对于输入数据的准备方式较为敏感。
  • 适用数据类型:标称型数据。

贝叶斯决策理论的核心思想:即选择具有最高概率的决策。

二、条件概率

条件概率:P(A|B) = P(AB)/P(B)

贝叶斯准则:p(c|x) = p(x|c)p(c) / p(x)

三、使用朴素贝叶斯进行文档分类

朴素贝叶斯的一般过程:

  1. 收集数据:可以使用任何方法。
  2. 准备数据:需要数值型或者布尔型数据。
  3. 分析数据:有大量特征时,绘制特征作用不大,此时使用直方图效果更好。
  4. 训练算法:计算不同的独立特征的条件概率。
  5. 测试算法:计算错误率。
  6. 使用算法:一个常见的朴素贝叶斯应用是文档分类。可以在任意的分类场景中使用朴素贝叶斯分类器,不一定非要是文本。

四、使用Python进行文本分类

4.1 准备数据:从文本中构建词向量

词表到向量的转换函数

朴素贝叶斯分类器通常有两种实现方式:一种基于贝努利模型实现,一种基于多项式模型实现。 这里采用前一种实现方式。该实现方式中并不考虑词在文档中出现的次数,只考虑出不出现,因此在这个意义上相当于假设词是等权重的。

  1. # 创建实验样本
  2. def loadDataSet():
  3. postingList = [['my', 'dog', 'has', 'flea', \
  4. 'problems', 'help', 'please'],
  5. ['maybe', 'not', 'take', 'him', \
  6. 'to', 'dog', 'park', 'stupid'],
  7. ['my', 'dalmation', 'is', 'so', 'cute', \
  8. 'I', 'love', 'him'],
  9. ['stop', 'posting', 'stupid', 'worthless', 'garbage'],
  10. ['mr', 'licks', 'ate', 'my', 'steak', 'how', \
  11. 'to', 'stop', 'him'],
  12. ['quit', 'buying', 'worthless', 'dog', 'food', 'stupid']]
  13. classVec = [0, 1, 0, 1, 0, 1] # 1 代表侮辱性文字,0 代表正常言论
  14. # postingList:进行词条切分后的文档集合,这些文档来自斑点犬爱好者留言板
  15. # classVec:类别标签。文本类别由人工标注
  16. return postingList, classVec
  17. # 创建一个包含在所有文档中出现的不重复词的列表
  18. def createVocabList(dataSet):
  19. vocabSet = set([]) # 创建一个空集
  20. for document in dataSet:
  21. vocabSet = vocabSet | set(document) # 创建两个集合的并集
  22. return list(vocabSet)
  23. def setOfWords2Vec(vocabList, inputSet):
  24. returnVec = [0] * len(vocabList) # 创建一个其中所含元素都为0的向量,与词汇表等长
  25. for word in inputSet:
  26. if word in vocabList:
  27. returnVec[vocabList.index(word)] = 1
  28. else:
  29. print("the word: %s is not in my Vocabulary!" % word)
  30. return returnVec
  1. listOPosts, listClasses = loadDataSet()
  2. myVocabList = createVocabList(listOPosts)
  3. print(myVocabList)
['cute', 'quit', 'maybe', 'food', 'not', 'garbage', 'help', 'him', 'has', 'problems', 'I', 'posting', 'so', 'buying', 'park', 'dalmation', 'ate', 'mr', 'licks', 'take', 'please', 'dog', 'love', 'stop', 'how', 'steak', 'is', 'stupid', 'worthless', 'to', 'flea', 'my']
print(setOfWords2Vec(myVocabList, listOPosts[0]))
[0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1]

4.2 训练算法:从词向量计算概率

重写贝叶斯准则,其中,粗体w表示这是一个向量,即它由多个数值组成,数值个数与词汇表中的词个数相同。

p(ci|w) = p(w|ci)p(ci) / p(w)

使用上述公式,对每个类计算该值,然后比较这两个概率值的大小。

p(ci) = 类别i(侮辱性或非侮辱性留言)中文档数 / 总文档数

接着计算p(w|ci),用到朴素贝叶斯假设。 如果将w展开为一个个独立特征,那么就可以将上述概率写作p(w0, w1,..wN|ci)。 这里假设所有词都相互独立,该假设也称作条件独立性假设,它意味着可以使用p(w0|ci)p(w1|ci)..p(wN|ci)来计算上述概率

伪代码如下:

  1. 计算每个类别中的文档数目
  2. 对每篇训练文档:
  3. 对每个类别:
  4. 如果词条出现文档中➡️增加该词条的计数值
  5. 增加所有词条的计数值
  6. 对每个类别:
  7. 对每个词条:
  8. 将该词条的数目除以总词条数目得到条件概率
  9. 返回每个类别的条件概率

朴素贝叶斯分类器训练函数

  1. from numpy import *
  2. # trainMatrix:文档矩阵
  3. # trainCategory:由每篇文档类别标签所构成的向量
  4. def trainNB0(trainMatrix, trainCategory):
  5. numTrainDocs = len(trainMatrix) # 文档总数
  6. numWords = len(trainMatrix[0]) # 词汇表长度
  7. # 计算文档属于侮辱性文档(class=1)的概率
  8. pAbusive = sum(trainCategory) / float(numTrainDocs)
  9. # 初始化概率
  10. p0Num = zeros(numWords); p1Num = zeros(numWords)
  11. p0Denom = 0.0; p1Denom = 0.0
  12. for i in range(numTrainDocs):
  13. if trainCategory[i] == 1:
  14. # 向量相加
  15. p1Num += trainMatrix[i] # 所有侮辱性文档中每个词向量出现个数
  16. p1Denom += sum(trainMatrix[i]) # 侮辱性文档总词数
  17. else:
  18. p0Num += trainMatrix[i]
  19. p0Denom += sum(trainMatrix[i])
  20. # 对每个元素做除法
  21. p1Vect = p1Num / p1Denom # change to log()
  22. p0Vect = p0Num / p0Denom
  23. return p0Vect, p1Vect, pAbusive
  1. trainMat = [] # 文档向量矩阵
  2. for postinDoc in listOPosts:
  3. trainMat.append(setOfWords2Vec(myVocabList, postinDoc))
  4. p0V, p1V, pAb = trainNB0(trainMat, listClasses)
  5. print(pAb)
0.5
print(p0V)
  1. [0.04166667 0. 0. 0. 0. 0.
  2. 0.04166667 0.08333333 0.04166667 0.04166667 0.04166667 0.
  3. 0.04166667 0. 0. 0.04166667 0.04166667 0.04166667
  4. 0.04166667 0. 0.04166667 0.04166667 0.04166667 0.04166667
  5. 0.04166667 0.04166667 0.04166667 0. 0. 0.04166667
  6. 0.04166667 0.125 ]

4.3 测试算法:根据现实情况修改分类器

利用贝叶斯分类器对文档进行分类时,要计算多个概率的乘积以获得文档属于某个类别的概率,即计算p(w0|1)p(w1|1)..p(wN|1)。如果其中一个概率值为0,那么最后的乘积也为0.为降低这种影响,可将所有词的出现数初始化为1,并将分母初始化为2。

另一个问题是下溢出,这是由于太多很小的数相乘造成的。一种解决办法是对乘积去自然对数,在代数中有ln(a*b)=ln(a)+ln(b)。可以避免下溢出或者浮点数舍入导致的错误,也不会有任何损失。

  1. def trainNB1(trainMatrix, trainCategory):
  2. numTrainDocs = len(trainMatrix) # 文档总数
  3. numWords = len(trainMatrix[0]) # 词汇表长度
  4. # 计算文档属于侮辱性文档(class=1)的概率
  5. pAbusive = sum(trainCategory) / float(numTrainDocs)
  6. # 初始化概率
  7. p0Num = ones(numWords); p1Num = ones(numWords)
  8. p0Denom = 2.0; p1Denom = 2.0
  9. for i in range(numTrainDocs):
  10. if trainCategory[i] == 1:
  11. # 向量相加
  12. p1Num += trainMatrix[i] # 所有侮辱性文档中每个词向量出现个数
  13. p1Denom += sum(trainMatrix[i]) # 侮辱性文档总词数
  14. else:
  15. p0Num += trainMatrix[i]
  16. p0Denom += sum(trainMatrix[i])
  17. # 对每个元素做除法
  18. p1Vect = log(p1Num / p1Denom)
  19. p0Vect = log(p0Num / p0Denom)
  20. return p0Vect, p1Vect, pAbusive

朴素贝叶斯分类函数

  1. # vec2Classify为要分类的向量
  2. def classifyNB(vec2Classify, p0Vec, p1Vec, pClass1):
  3. # 相乘是指对应元素相乘
  4. p1 = sum(vec2Classify * p1Vec) + log(pClass1)
  5. p0 = sum(vec2Classify * p0Vec) + log(1.0 - pClass1)
  6. if p1 > p0:
  7. return 1
  8. else:
  9. return 0
  10. def testingNB():
  11. listOPosts, listClasses = loadDataSet()
  12. myVocabList = createVocabList(listOPosts)
  13. trainMat = []
  14. for postingDoc in listOPosts:
  15. trainMat.append(setOfWords2Vec(myVocabList, postingDoc))
  16. p0V, p1V, pAb = trainNB1(array(trainMat), array(listClasses))
  17. testEntry = ['love', 'my', 'dalmation']
  18. thisDoc = array(setOfWords2Vec(myVocabList, testEntry))
  19. print(testEntry, 'classified as: ', classifyNB(thisDoc, p0V, p1V, pAb))
  20. testEntry = ['stupid', 'garbage']
  21. thisDoc = array(setOfWords2Vec(myVocabList, testEntry))
  22. print(testEntry, 'classified as: ', classifyNB(thisDoc, p0V, p1V, pAb))
testingNB()
  1. ['love', 'my', 'dalmation'] classified as: 0
  2. ['stupid', 'garbage'] classified as: 1

4.4 准备数据:文档词袋模型

**词集模型:**将每个词的出现与否作为一个特征。

**词袋模型:**如果一个词在文档中出现不止一次,这可能意味着包含该词是否出现在文档中所不能表达的某种信息。 在词袋中,每个单词可以出现多次,而在词集中,每个词只能出现一次。

朴素贝叶斯词袋模型

  1. def bagOfWords2VecMN(vocabList, inputSet):
  2. returnVec = [0] * len(vocabList)
  3. for word in inputSet:
  4. if word in vocabList:
  5. returnVec[vocabList.index(word)] += 1 # 不只是将对应的数值设为1
  6. return returnVec

五、示例:使用朴素贝叶斯过滤垃圾邮件

示例:使用朴素贝叶斯对电子邮件进行分类

  1. 收集数据:提供文本文件。
  2. 准备数据:将文本文件解析成词条向量。
  3. 分析数据:检查词条确保解析的正确性。
  4. 训练算法:使用我们之前建立的trainNB1()函数
  5. 测试算法:使用classifyNB(),并且构建一个新的测试函数来计算文档集的错误率。
  6. 使用算法:构建一个完整的程序对一组文档进行分类,将错分的文档输出到屏幕上。

5.1 准备数据:切分文本

  1. import re
  2. mySent = 'This book is the best book on Python or M.L. I have ever laid eyes upon.'
  3. regEx = re.compile(r'\W+')
  4. # \W:匹配特殊字符,即非字母、非数字、非汉字、非_
  5. # 表示匹配前面的规则至少 1 次,可以多次匹配
  6. listOfTokens = regEx.split(mySent)
  7. print(listOfTokens)
['This', 'book', 'is', 'the', 'best', 'book', 'on', 'Python', 'or', 'M', 'L', 'I', 'have', 'ever', 'laid', 'eyes', 'upon', '']
  1. # 去掉空字符串。可以计算每个字符串的长度,只返回长度大于0的字符串
  2. # 将字符串全部转换成小写
  3. print([tok.lower() for tok in listOfTokens if len(tok) > 0])
['this', 'book', 'is', 'the', 'best', 'book', 'on', 'python', 'or', 'm', 'l', 'i', 'have', 'ever', 'laid', 'eyes', 'upon']
  1. emailText = open('email/ham/6.txt', "r", encoding='utf-8', errors='ignore').read()
  2. listOfTokens = regEx.split(emailText)
  3. # 6.txt文件非常长,这是某公司告知他们不再进行某些支持的一封邮件。
  4. # 由于是URL:answer.py?hl=en&answer=174623的一部分,因而会出现en和py这样的单词。
  5. # 当对URL进行切分时,会得到很多的词,因而在实现时会过滤掉长度小于3的字符串。

5.2 测试算法:使用朴素贝叶斯进行交叉验证

文件解析及完整的垃圾邮件测试函数

  1. def textParse(bigString):
  2. import re
  3. listOfTokens = re.split(r'\W+', bigString)
  4. return [tok.lower() for tok in listOfTokens if len(tok) > 2]
  5. # 对贝叶斯垃圾邮件分类器进行自动化处理
  6. def spamTest():
  7. docList = []; classList = []; fullText = []
  8. for i in range(1,26):
  9. # 导入并解析文本文件
  10. # 导入文件夹spam与ham下的文本文件,并将它们解析为词列表。
  11. wordList = textParse(open('email/spam/%d.txt' % i, "r", encoding='utf-8', errors='ignore').read())
  12. docList.append(wordList)
  13. fullText.extend(wordList)
  14. # append()向列表中添加一个对象object,整体打包追加
  15. # extend() 函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。
  16. classList.append(1)
  17. wordList = textParse(open('email/ham/%d.txt' % i, "r", encoding='utf-8', errors='ignore').read())
  18. docList.append(wordList)
  19. fullText.extend(wordList)
  20. classList.append(0)
  21. vocabList = createVocabList(docList) # 词列表
  22. # 本例中共有50封电子邮件,其中10封电子邮件被随机选择为测试集
  23. # 分类器所需要的概率计算只利用训练集中的文档来完成。
  24. trainingSet = list(range(50)); testSet = []
  25. # 随机构建训练集
  26. for i in range(10):
  27. # 随机选择其中10个文件作为测试集,同时也将其从训练集中剔除。
  28. # 这种随机选择数据的一部分作为训练集,而剩余部分作为测试集的过程称为 留存交叉验证。
  29. randIndex = int(random.uniform(0, len(trainingSet)))
  30. testSet.append(trainingSet[randIndex])
  31. del(trainingSet[randIndex])
  32. trainMat = []; trainClasses = []
  33. # 对测试集分类
  34. for docIndex in trainingSet: # 训练
  35. trainMat.append(setOfWords2Vec(vocabList, docList[docIndex])) # 词向量
  36. trainClasses.append(classList[docIndex]) # 标签
  37. p0V, p1V, pSpam = trainNB1(array(trainMat), array(trainClasses))
  38. errorCount = 0
  39. for docIndex in testSet: # 测试
  40. wordVector = setOfWords2Vec(vocabList, docList[docIndex])
  41. if classifyNB(array(wordVector), p0V, p1V, pSpam) != classList[docIndex]:
  42. errorCount += 1
  43. print('classificagion error ', docList[docIndex])
  44. print('the error rate is: ', float(errorCount)/len(testSet))
spamTest()
  1. classificagion error ['home', 'based', 'business', 'opportunity', 'knocking', 'your', 'door', 'dont', 'rude', 'and', 'let', 'this', 'chance', 'you', 'can', 'earn', 'great', 'income', 'and', 'find', 'your', 'financial', 'life', 'transformed', 'learn', 'more', 'here', 'your', 'success', 'work', 'from', 'home', 'finder', 'experts']
  2. the error rate is: 0.1

六、示例:使用朴素贝叶斯分类器从个人广告中获取区域倾向

示例:使用朴素贝叶斯来发现地域相关的用词

  1. 收集数据:从RSS源收集内容,这里需要对RSS源构建一个接口
  2. 准备数据:将文本文件解析成词条向量
  3. 分析数据:检查词条确保解析的正确性
  4. 训练算法:使用我们之前建立的trainNB1()函数
  5. 测试算法:观查错误率,确保分类器可用。可以修改切分程序,以降低错误率,提高分类结果。
  6. 使用算法:构建一个完整的程序,封装所有内容。给定两个RSS源,该程序会显示最常用的公共词。

下面将使用来自不同城市的广告训练一个分类器,然后观察分类器的效果。目的是通过观察单词和条件概率值来发现与特定城市相关的内容。

6.1 收集数据:导入RSS源

Universal Feed Parser是Python中最常用的RSS程序库。 可以在 http://code.google.com/p/feedparser/ 下浏览相关文档。 首先解压下载的包,并将当前目录切换到解压文件所在的文件夹,然后在Python提示符下敲入>>python setup.py install

  1. import feedparser
  2. ny = feedparser.parse('http://www.nasa.gov/rss/dyn/image_of_the_day.rss')
  1. print(ny['entries'])
  2. print(len(ny['entries']))
  1. [{'title': 'Operation IceBridge: Exploring Alaska’s Mountain Glaciers', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Operation IceBridge: Exploring Alaska’s Mountain Glaciers'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/operation-icebridge-exploring-alaska-s-mountain-glaciers'}, {'length': '1883999', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/46713638424_0f32acec3f_k.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/operation-icebridge-exploring-alaska-s-mountain-glaciers', 'summary': 'In Alaska, 5 percent of the land is covered by glaciers that are losing a lot of ice and contributing to sea level rise.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'In Alaska, 5 percent of the land is covered by glaciers that are losing a lot of ice and contributing to sea level rise.'}, 'id': 'http://www.nasa.gov/image-feature/operation-icebridge-exploring-alaska-s-mountain-glaciers', 'guidislink': False, 'published': 'Tue, 02 Apr 2019 11:29 EDT', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=4, tm_mday=2, tm_hour=15, tm_min=29, tm_sec=0, tm_wday=1, tm_yday=92, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Nick Hague Completes 215th Spacewalk on Station', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Nick Hague Completes 215th Spacewalk on Station'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/nick-hague-completes-215th-spacewalk-on-station'}, {'length': '2215322', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/iss059e005744.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/nick-hague-completes-215th-spacewalk-on-station', 'summary': 'Astronaut Nick Hague performs a spacewalk on March 29, 2019.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Astronaut Nick Hague performs a spacewalk on March 29, 2019.'}, 'id': 'http://www.nasa.gov/image-feature/nick-hague-completes-215th-spacewalk-on-station', 'guidislink': False, 'published': 'Mon, 01 Apr 2019 10:08 EDT', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=4, tm_mday=1, tm_hour=14, tm_min=8, tm_sec=0, tm_wday=0, tm_yday=91, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Hubble Spots Flock of Cosmic Ducks', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Hubble Spots Flock of Cosmic Ducks'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/goddard/2019/hubble-spots-flock-of-cosmic-ducks'}, {'length': '2579018', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/potw1912a.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/goddard/2019/hubble-spots-flock-of-cosmic-ducks', 'summary': 'This star-studded image shows us a portion of Messier 11, an open star cluster in the southern constellation of Scutum (the Shield). Messier 11 is also known as the Wild Duck Cluster, as its brightest stars form a “V” shape that somewhat resembles a flock of ducks in flight.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'This star-studded image shows us a portion of Messier 11, an open star cluster in the southern constellation of Scutum (the Shield). Messier 11 is also known as the Wild Duck Cluster, as its brightest stars form a “V” shape that somewhat resembles a flock of ducks in flight.'}, 'id': 'http://www.nasa.gov/image-feature/goddard/2019/hubble-spots-flock-of-cosmic-ducks', 'guidislink': False, 'published': 'Fri, 29 Mar 2019 10:37 EDT', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=3, tm_mday=29, tm_hour=14, tm_min=37, tm_sec=0, tm_wday=4, tm_yday=88, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Hubble Watches Spun-Up Asteroid Coming Apart', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Hubble Watches Spun-Up Asteroid Coming Apart'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/hubble-watches-spun-up-asteroid-coming-apart'}, {'length': '4521802', 'type': 'image/png', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/stsci-h-p1922a-m-2000x1164.png', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/hubble-watches-spun-up-asteroid-coming-apart', 'summary': 'A small asteroid was caught in the process of spinning so fast it’s throwing off material, according to new data from NASA’s Hubble Space Telescope and other observatories.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'A small asteroid was caught in the process of spinning so fast it’s throwing off material, according to new data from NASA’s Hubble Space Telescope and other observatories.'}, 'id': 'http://www.nasa.gov/image-feature/hubble-watches-spun-up-asteroid-coming-apart', 'guidislink': False, 'published': 'Thu, 28 Mar 2019 10:14 EDT', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=3, tm_mday=28, tm_hour=14, tm_min=14, tm_sec=0, tm_wday=3, tm_yday=87, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Joan Stupik, Guidance and Control Engineer', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Joan Stupik, Guidance and Control Engineer'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/joan-stupik-guidance-and-control-engineer'}, {'length': '4456448', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/joan_stupik.jpeg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/joan-stupik-guidance-and-control-engineer', 'summary': 'When Joan Stupik was a child, her parents bought her a mini-planetarium that she could use to project the stars on her bedroom ceiling.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'When Joan Stupik was a child, her parents bought her a mini-planetarium that she could use to project the stars on her bedroom ceiling.'}, 'id': 'http://www.nasa.gov/image-feature/joan-stupik-guidance-and-control-engineer', 'guidislink': False, 'published': 'Wed, 27 Mar 2019 09:30 EDT', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=3, tm_mday=27, tm_hour=13, tm_min=30, tm_sec=0, tm_wday=2, tm_yday=86, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Orion Launch Abort System Attitude Control Motor Hot-Fire Test', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Orion Launch Abort System Attitude Control Motor Hot-Fire Test'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/orion-launch-abort-system-attitude-control-motor-hot-fire-test'}, {'length': '676263', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/ngacm1_1.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/orion-launch-abort-system-attitude-control-motor-hot-fire-test', 'summary': "A static hot-fire test of the Orion spacecraft's Launch Abort System Attitude Control Motor to help qualify the motor for human spaceflight, to help ensure Orion is ready from liftoff to splashdown for missions to the Moon.", 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': "A static hot-fire test of the Orion spacecraft's Launch Abort System Attitude Control Motor to help qualify the motor for human spaceflight, to help ensure Orion is ready from liftoff to splashdown for missions to the Moon."}, 'id': 'http://www.nasa.gov/image-feature/orion-launch-abort-system-attitude-control-motor-hot-fire-test', 'guidislink': False, 'published': 'Tue, 26 Mar 2019 09:06 EDT', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=3, tm_mday=26, tm_hour=13, tm_min=6, tm_sec=0, tm_wday=1, tm_yday=85, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Nick Hague Completes First Spacewalk', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Nick Hague Completes First Spacewalk'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/nick-hague-completes-first-spacewalk'}, {'length': '149727', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/nick.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/nick-hague-completes-first-spacewalk', 'summary': 'NASA astronaut Nick Hague completed the first spacewalk of his career on Friday, March 22, 2019. He and fellow astronaut Anne McClain worked on a set of battery upgrades for six hours and 39 minutes, on the International Space Station’s starboard truss.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'NASA astronaut Nick Hague completed the first spacewalk of his career on Friday, March 22, 2019. He and fellow astronaut Anne McClain worked on a set of battery upgrades for six hours and 39 minutes, on the International Space Station’s starboard truss.'}, 'id': 'http://www.nasa.gov/image-feature/nick-hague-completes-first-spacewalk', 'guidislink': False, 'published': 'Mon, 25 Mar 2019 11:23 EDT', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=3, tm_mday=25, tm_hour=15, tm_min=23, tm_sec=0, tm_wday=0, tm_yday=84, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Hubble Captures the Brilliant Heart of a Massive Galaxy', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Hubble Captures the Brilliant Heart of a Massive Galaxy'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/hubble-captures-the-brilliant-heart-of-a-massive-galaxy'}, {'length': '105869', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/potw1911a.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/hubble-captures-the-brilliant-heart-of-a-massive-galaxy', 'summary': 'This fuzzy orb of light is a giant elliptical galaxy filled with an incredible 200 billion stars.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'This fuzzy orb of light is a giant elliptical galaxy filled with an incredible 200 billion stars.'}, 'id': 'http://www.nasa.gov/image-feature/hubble-captures-the-brilliant-heart-of-a-massive-galaxy', 'guidislink': False, 'published': 'Fri, 22 Mar 2019 08:39 EDT', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=3, tm_mday=22, tm_hour=12, tm_min=39, tm_sec=0, tm_wday=4, tm_yday=81, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Margaret W. ‘Hap’ Brennecke: Trailblazer', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Margaret W. ‘Hap’ Brennecke: Trailblazer'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/margaret-w-hap-brennecke-trailblazer'}, {'length': '407124', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/hap_brennecke_1.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/margaret-w-hap-brennecke-trailblazer', 'summary': 'Margaret W. ‘Hap’ Brennecke was the first female welding engineer to work in the Materials and Processes Laboratory at NASA’s Marshall Space Flight Center.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Margaret W. ‘Hap’ Brennecke was the first female welding engineer to work in the Materials and Processes Laboratory at NASA’s Marshall Space Flight Center.'}, 'id': 'http://www.nasa.gov/image-feature/margaret-w-hap-brennecke-trailblazer', 'guidislink': False, 'published': 'Thu, 21 Mar 2019 11:32 EDT', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=3, tm_mday=21, tm_hour=15, tm_min=32, tm_sec=0, tm_wday=3, tm_yday=80, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': "Waxing Gibbous Moon Above Earth's Limb", 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': "Waxing Gibbous Moon Above Earth's Limb"}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/waxing-gibbous-moon-above-earths-limb'}, {'length': '1827111', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/stationmoon.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/waxing-gibbous-moon-above-earths-limb', 'summary': "The waxing gibbous moon is pictured above Earth's limb as the International Space Station was orbiting 266 miles above the South Atlantic Ocean.", 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': "The waxing gibbous moon is pictured above Earth's limb as the International Space Station was orbiting 266 miles above the South Atlantic Ocean."}, 'id': 'http://www.nasa.gov/image-feature/waxing-gibbous-moon-above-earths-limb', 'guidislink': False, 'published': 'Wed, 20 Mar 2019 11:01 EDT', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=3, tm_mday=20, tm_hour=15, tm_min=1, tm_sec=0, tm_wday=2, tm_yday=79, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Preparing for Apollo 11', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Preparing for Apollo 11'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/preparing-for-apollo-11'}, {'length': '973531', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/apollo_11_bu_crew_lovell_haise_lm_alt_test_mar_20_1969_ap11-69-h-548hr.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/preparing-for-apollo-11', 'summary': 'Apollo 11 backup crew members Fred Haise (left) and Jim Lovell prepare to enter the Lunar Module for an altitude test.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Apollo 11 backup crew members Fred Haise (left) and Jim Lovell prepare to enter the Lunar Module for an altitude test.'}, 'id': 'http://www.nasa.gov/image-feature/preparing-for-apollo-11', 'guidislink': False, 'published': 'Tue, 19 Mar 2019 12:28 EDT', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=3, tm_mday=19, tm_hour=16, tm_min=28, tm_sec=0, tm_wday=1, tm_yday=78, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Going Where the Wind Takes It', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Going Where the Wind Takes It'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/langley/going-where-the-wind-takes-it'}, {'length': '3893169', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/lrc-2019-h1_p_dawn-031115.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/langley/going-where-the-wind-takes-it', 'summary': '\u200bElectronics technician Anna Noe makes final checks to the Doppler Aerosol Wind Lidar (DAWN) before it begins a cross-country road trip for use in an upcoming airborne science campaign.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': '\u200bElectronics technician Anna Noe makes final checks to the Doppler Aerosol Wind Lidar (DAWN) before it begins a cross-country road trip for use in an upcoming airborne science campaign.'}, 'id': 'http://www.nasa.gov/image-feature/langley/going-where-the-wind-takes-it', 'guidislink': False, 'published': 'Mon, 18 Mar 2019 10:14 EDT', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=3, tm_mday=18, tm_hour=14, tm_min=14, tm_sec=0, tm_wday=0, tm_yday=77, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Liftoff! A New Crew Heads to the Space Station', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Liftoff! A New Crew Heads to the Space Station'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/liftoff-a-new-crew-heads-to-the-space-station'}, {'length': '982872', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/47328135122_85619ed320_o.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/liftoff-a-new-crew-heads-to-the-space-station', 'summary': 'The Soyuz MS-12 spacecraft lifted off with Expedition 59 crewmembers on a journey to the International Space Station.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'The Soyuz MS-12 spacecraft lifted off with Expedition 59 crewmembers on a journey to the International Space Station.'}, 'id': 'http://www.nasa.gov/image-feature/liftoff-a-new-crew-heads-to-the-space-station', 'guidislink': False, 'published': 'Fri, 15 Mar 2019 09:00 EDT', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=3, tm_mday=15, tm_hour=13, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=74, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'The Soyuz at Dawn', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'The Soyuz at Dawn'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/the-soyuz-at-dawn'}, {'length': '733645', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/33498981418_5880fa2253_k.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/the-soyuz-at-dawn', 'summary': 'The Soyuz rocket is seen at dawn on launch site 1 of the Baikonur Cosmodrome, Thursday, March 14, 2019 in Baikonur, Kazakhstan.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'The Soyuz rocket is seen at dawn on launch site 1 of the Baikonur Cosmodrome, Thursday, March 14, 2019 in Baikonur, Kazakhstan.'}, 'id': 'http://www.nasa.gov/image-feature/the-soyuz-at-dawn', 'guidislink': False, 'published': 'Thu, 14 Mar 2019 09:39 EDT', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=3, tm_mday=14, tm_hour=13, tm_min=39, tm_sec=0, tm_wday=3, tm_yday=73, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Stephanie Wilson: Preparing for Space', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Stephanie Wilson: Preparing for Space'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/stephanie-wilson-preparing-for-space'}, {'length': '1844091', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/jsc2007e08828.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/stephanie-wilson-preparing-for-space', 'summary': 'Stephanie Wilson is a veteran of three spaceflights--STS-120, STS-121 and STS-131--and has logged more than 42 days in space.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Stephanie Wilson is a veteran of three spaceflights--STS-120, STS-121 and STS-131--and has logged more than 42 days in space.'}, 'id': 'http://www.nasa.gov/image-feature/stephanie-wilson-preparing-for-space', 'guidislink': False, 'published': 'Wed, 13 Mar 2019 09:11 EDT', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=3, tm_mday=13, tm_hour=13, tm_min=11, tm_sec=0, tm_wday=2, tm_yday=72, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Soyuz Rollout to the Launch Pad', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Soyuz Rollout to the Launch Pad'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/soyuz-rollout-to-the-launch-pad'}, {'length': '1636390', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/46634947384_8ecb255750_o.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/soyuz-rollout-to-the-launch-pad', 'summary': 'The Soyuz rocket is transported by train to the launch pad, Tuesday, March 12, 2019 at the Baikonur Cosmodrome in Kazakhstan.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'The Soyuz rocket is transported by train to the launch pad, Tuesday, March 12, 2019 at the Baikonur Cosmodrome in Kazakhstan.'}, 'id': 'http://www.nasa.gov/image-feature/soyuz-rollout-to-the-launch-pad', 'guidislink': False, 'published': 'Tue, 12 Mar 2019 09:24 EDT', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=3, tm_mday=12, tm_hour=13, tm_min=24, tm_sec=0, tm_wday=1, tm_yday=71, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': "NASA's Future: From the Moon to Mars", 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': "NASA's Future: From the Moon to Mars"}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/nasas-future-from-the-moon-to-mars'}, {'length': '2210744', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/47300989392_663a074b76_k.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/nasas-future-from-the-moon-to-mars', 'summary': 'NASA Administrator Jim Bridenstine was photographed inside the Super Guppy aircraft that will carry the flight frame with the Orion crew module to a testing facility in Ohio.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'NASA Administrator Jim Bridenstine was photographed inside the Super Guppy aircraft that will carry the flight frame with the Orion crew module to a testing facility in Ohio.'}, 'id': 'http://www.nasa.gov/image-feature/nasas-future-from-the-moon-to-mars', 'guidislink': False, 'published': 'Mon, 11 Mar 2019 21:19 EDT', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=3, tm_mday=12, tm_hour=1, tm_min=19, tm_sec=0, tm_wday=1, tm_yday=71, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': "Nancy Grace Roman: NASA's First Chief Astronomer", 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': "Nancy Grace Roman: NASA's First Chief Astronomer"}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/nancy-grace-roman-nasas-first-chief-astronomer'}, {'length': '971516', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/27154773587_c99105746d_k.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/nancy-grace-roman-nasas-first-chief-astronomer', 'summary': "Nancy Grace Roman, NASA's first chief astronomer, is known as the 'Mother of Hubble.'", 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': "Nancy Grace Roman, NASA's first chief astronomer, is known as the 'Mother of Hubble.'"}, 'id': 'http://www.nasa.gov/image-feature/nancy-grace-roman-nasas-first-chief-astronomer', 'guidislink': False, 'published': 'Fri, 08 Mar 2019 11:29 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=3, tm_mday=8, tm_hour=16, tm_min=29, tm_sec=0, tm_wday=4, tm_yday=67, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Ann R. McNair and Mary Jo Smith with Model of Pegasus Satellite, July 14, 1964', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Ann R. McNair and Mary Jo Smith with Model of Pegasus Satellite, July 14, 1964'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/centers/marshall/history/ann-r-mcnair-and-mary-jo-smith-with-model-of-pegasus-satellite-july-14-1964.html'}, {'length': '351665', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/4-9670_anne_mcnair_and_mary_jo_smith.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/centers/marshall/history/ann-r-mcnair-and-mary-jo-smith-with-model-of-pegasus-satellite-july-14-1964.html', 'summary': 'In 1964, Ann R. McNair and Mary Jo Smith pose with a model of a Pegasus Satellite.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'In 1964, Ann R. McNair and Mary Jo Smith pose with a model of a Pegasus Satellite.'}, 'id': 'http://www.nasa.gov/centers/marshall/history/ann-r-mcnair-and-mary-jo-smith-with-model-of-pegasus-satellite-july-14-1964.html', 'guidislink': False, 'published': 'Thu, 07 Mar 2019 11:57 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=3, tm_mday=7, tm_hour=16, tm_min=57, tm_sec=0, tm_wday=3, tm_yday=66, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'NASA Captures Supersonic Shock Interaction', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'NASA Captures Supersonic Shock Interaction'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/centers/armstrong/multimedia/imagegallery/Schlieren/f4_p3_cam_plane_drop_new_2-22-19.html'}, {'length': '1440965', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/f4_p3_cam_plane_drop_new_2-22-19.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/centers/armstrong/multimedia/imagegallery/Schlieren/f4_p3_cam_plane_drop_new_2-22-19.html', 'summary': 'One of the greatest challenges of the fourth phase of Air-to-Air Background Oriented Schlieren flights, or AirBOS flight series was timing.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'One of the greatest challenges of the fourth phase of Air-to-Air Background Oriented Schlieren flights, or AirBOS flight series was timing.'}, 'id': 'http://www.nasa.gov/centers/armstrong/multimedia/imagegallery/Schlieren/f4_p3_cam_plane_drop_new_2-22-19.html', 'guidislink': False, 'published': 'Wed, 06 Mar 2019 05:58 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=3, tm_mday=6, tm_hour=10, tm_min=58, tm_sec=0, tm_wday=2, tm_yday=65, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'The Dawn of a New Era in Human Spaceflight', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'The Dawn of a New Era in Human Spaceflight'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/the-dawn-of-a-new-era-in-human-spaceflight'}, {'length': '478563', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/3.3-445a2747.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/the-dawn-of-a-new-era-in-human-spaceflight', 'summary': '"The dawn of a new era in human spaceflight," wrote astronaut Anne McClain. McClain had an unparalleled view from orbit of SpaceX\'s Crew Dragon spacecraft as it approached the International Space Station for docking on Sunday, March 3, 2019.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': '"The dawn of a new era in human spaceflight," wrote astronaut Anne McClain. McClain had an unparalleled view from orbit of SpaceX\'s Crew Dragon spacecraft as it approached the International Space Station for docking on Sunday, March 3, 2019.'}, 'id': 'http://www.nasa.gov/image-feature/the-dawn-of-a-new-era-in-human-spaceflight', 'guidislink': False, 'published': 'Tue, 05 Mar 2019 11:20 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=3, tm_mday=5, tm_hour=16, tm_min=20, tm_sec=0, tm_wday=1, tm_yday=64, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'SpaceX Falcon 9 Rocket Lifts Off From Launch Complex 39A', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'SpaceX Falcon 9 Rocket Lifts Off From Launch Complex 39A'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/spacex-falcon-9-rocket-lifts-off-from-launch-complex-39a'}, {'length': '1251976', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/46531972754_27aefcb3cb_k.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/spacex-falcon-9-rocket-lifts-off-from-launch-complex-39a', 'summary': 'On March 2, 2:49 a.m. EST, a two-stage SpaceX Falcon 9 rocket lifts off from Launch Complex 39A at NASA’s Kennedy Space Center in Florida for Demo-1, the first uncrewed mission of the agency’s Commercial Crew Program.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'On March 2, 2:49 a.m. EST, a two-stage SpaceX Falcon 9 rocket lifts off from Launch Complex 39A at NASA’s Kennedy Space Center in Florida for Demo-1, the first uncrewed mission of the agency’s Commercial Crew Program.'}, 'id': 'http://www.nasa.gov/image-feature/spacex-falcon-9-rocket-lifts-off-from-launch-complex-39a', 'guidislink': False, 'published': 'Mon, 04 Mar 2019 10:40 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=3, tm_mday=4, tm_hour=15, tm_min=40, tm_sec=0, tm_wday=0, tm_yday=63, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'SpaceX Demo-1 Launch', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'SpaceX Demo-1 Launch'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/spacex-demo-1-launch'}, {'length': '1574853', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/33384173438_dfb4fa5e4a_o.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/spacex-demo-1-launch', 'summary': "A SpaceX Falcon 9 rocket with the company's Crew Dragon spacecraft onboard launches from Launch Complex 39A, Saturday, March 2, 2019.", 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': "A SpaceX Falcon 9 rocket with the company's Crew Dragon spacecraft onboard launches from Launch Complex 39A, Saturday, March 2, 2019."}, 'id': 'http://www.nasa.gov/image-feature/spacex-demo-1-launch', 'guidislink': False, 'published': 'Sun, 03 Mar 2019 14:10 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=3, tm_mday=3, tm_hour=19, tm_min=10, tm_sec=0, tm_wday=6, tm_yday=62, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Mae Jemison, First African American Woman in Space', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Mae Jemison, First African American Woman in Space'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/mae-jemison-first-african-american-woman-in-space'}, {'length': '1539289', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/mae_jemison_29487037511.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/mae-jemison-first-african-american-woman-in-space', 'summary': 'Mae Jemison was the first African Ameican woman in space.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Mae Jemison was the first African Ameican woman in space.'}, 'id': 'http://www.nasa.gov/image-feature/mae-jemison-first-african-american-woman-in-space', 'guidislink': False, 'published': 'Fri, 01 Mar 2019 09:00 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=3, tm_mday=1, tm_hour=14, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=60, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': "SpaceX Demo-1: 'Go' for Launch", 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': "SpaceX Demo-1: 'Go' for Launch"}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/spacex-demo-1-go-for-launch'}, {'length': '699850', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/demo-1.jpeg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/spacex-demo-1-go-for-launch', 'summary': 'Two days remain until the planned liftoff of a SpaceX Crew Dragon spacecraft on the company’s Falcon 9 rocket—the first launch of a commercially built and operated American spacecraft and space system designed for humans.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Two days remain until the planned liftoff of a SpaceX Crew Dragon spacecraft on the company’s Falcon 9 rocket—the first launch of a commercially built and operated American spacecraft and space system designed for humans.'}, 'id': 'http://www.nasa.gov/image-feature/spacex-demo-1-go-for-launch', 'guidislink': False, 'published': 'Thu, 28 Feb 2019 10:49 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=2, tm_mday=28, tm_hour=15, tm_min=49, tm_sec=0, tm_wday=3, tm_yday=59, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Curiosity Drives Over a New Kind of Terrain', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Curiosity Drives Over a New Kind of Terrain'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/curiosity-drives-over-a-new-kind-of-terrain'}, {'length': '175004', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/pia23047_0.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/curiosity-drives-over-a-new-kind-of-terrain', 'summary': 'The Curiosity Mars Rover took this image with its Mast Camera (Mastcam) on Feb. 10, 2019 (Sol 2316).', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'The Curiosity Mars Rover took this image with its Mast Camera (Mastcam) on Feb. 10, 2019 (Sol 2316).'}, 'id': 'http://www.nasa.gov/image-feature/curiosity-drives-over-a-new-kind-of-terrain', 'guidislink': False, 'published': 'Wed, 27 Feb 2019 11:25 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=2, tm_mday=27, tm_hour=16, tm_min=25, tm_sec=0, tm_wday=2, tm_yday=58, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Earnest C. Smith in the Astrionics Laboratory in 1964', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Earnest C. Smith in the Astrionics Laboratory in 1964'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/centers/marshall/history/earnest-c-smith-in-the-astrionics-laboratory-in-1964.html'}, {'length': '731063', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/ec_smith_1.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/centers/marshall/history/earnest-c-smith-in-the-astrionics-laboratory-in-1964.html', 'summary': 'Earnest C. Smith started at NASA Marshall in 1964 as an aerospace engineer in the Astrionics Laboratory. He was instrumental in the development and verification of the navigation system of the Lunar Roving Vehicle. Smith later became director of the Astrionics Laboratory at Marshall.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Earnest C. Smith started at NASA Marshall in 1964 as an aerospace engineer in the Astrionics Laboratory. He was instrumental in the development and verification of the navigation system of the Lunar Roving Vehicle. Smith later became director of the Astrionics Laboratory at Marshall.'}, 'id': 'http://www.nasa.gov/centers/marshall/history/earnest-c-smith-in-the-astrionics-laboratory-in-1964.html', 'guidislink': False, 'published': 'Tue, 26 Feb 2019 11:15 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=2, tm_mday=26, tm_hour=16, tm_min=15, tm_sec=0, tm_wday=1, tm_yday=57, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Alvin Drew Works on the International Space Station', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Alvin Drew Works on the International Space Station'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/alvin-drew-works-on-the-international-space-station'}, {'length': '920866', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/iss026e030929.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/alvin-drew-works-on-the-international-space-station', 'summary': "NASA astronaut Alvin Drew participated in the STS-133 mission's first spacewalk.", 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': "NASA astronaut Alvin Drew participated in the STS-133 mission's first spacewalk."}, 'id': 'http://www.nasa.gov/image-feature/alvin-drew-works-on-the-international-space-station', 'guidislink': False, 'published': 'Mon, 25 Feb 2019 10:30 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=2, tm_mday=25, tm_hour=15, tm_min=30, tm_sec=0, tm_wday=0, tm_yday=56, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Hubble Peers into the Vast Distance', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Hubble Peers into the Vast Distance'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/goddard/2019/hubble-peers-into-the-vast-distance'}, {'length': '3153377', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/potw1903a.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/goddard/2019/hubble-peers-into-the-vast-distance', 'summary': 'This picture showcases a gravitational lensing system called SDSS J0928+2031.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'This picture showcases a gravitational lensing system called SDSS J0928+2031.'}, 'id': 'http://www.nasa.gov/image-feature/goddard/2019/hubble-peers-into-the-vast-distance', 'guidislink': False, 'published': 'Fri, 22 Feb 2019 10:00 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=2, tm_mday=22, tm_hour=15, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=53, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Good Morning From the Space Station!', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Good Morning From the Space Station!'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/good-morning-from-the-space-station'}, {'length': '1811599', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/2.21-iss058e016863_highres.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/good-morning-from-the-space-station', 'summary': 'Good morning to our beautiful world, said astronaut Anne McClain from aboard the Space Station on Feb. 21, 2019.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Good morning to our beautiful world, said astronaut Anne McClain from aboard the Space Station on Feb. 21, 2019.'}, 'id': 'http://www.nasa.gov/image-feature/good-morning-from-the-space-station', 'guidislink': False, 'published': 'Thu, 21 Feb 2019 10:42 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=2, tm_mday=21, tm_hour=15, tm_min=42, tm_sec=0, tm_wday=3, tm_yday=52, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': "Countdown to Calving at Antarctica's Brunt Ice Shelf", 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': "Countdown to Calving at Antarctica's Brunt Ice Shelf"}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/countdown-to-calving-at-antarcticas-brunt-ice-shelf'}, {'length': '1768653', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/brunt_oli_2019023_lrg_0.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/countdown-to-calving-at-antarcticas-brunt-ice-shelf', 'summary': 'Cracks growing across Antarctica’s Brunt Ice Shelf are poised to release an iceberg with an area about twice the size of New York City. It is not yet clear how the remaining ice shelf will respond following the break, posing an uncertain future for scientific infrastructure and a human presence on the shelf that was first established in 1955.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Cracks growing across Antarctica’s Brunt Ice Shelf are poised to release an iceberg with an area about twice the size of New York City. It is not yet clear how the remaining ice shelf will respond following the break, posing an uncertain future for scientific infrastructure and a human presence on the shelf that was first established in 1955.'}, 'id': 'http://www.nasa.gov/image-feature/countdown-to-calving-at-antarcticas-brunt-ice-shelf', 'guidislink': False, 'published': 'Wed, 20 Feb 2019 12:11 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=2, tm_mday=20, tm_hour=17, tm_min=11, tm_sec=0, tm_wday=2, tm_yday=51, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Eat. Breathe. Do Science. Sleep Later.', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Eat. Breathe. Do Science. Sleep Later.'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/eat-breathe-do-science-sleep-later'}, {'length': '4020070', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/g1_-_dpitts_telescope.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/eat-breathe-do-science-sleep-later', 'summary': "Eat. Breathe. Do ccience. Sleep later. That's the motto of Derrick Pitts, NASA Solar System Ambassador.", 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': "Eat. Breathe. Do ccience. Sleep later. That's the motto of Derrick Pitts, NASA Solar System Ambassador."}, 'id': 'http://www.nasa.gov/image-feature/eat-breathe-do-science-sleep-later', 'guidislink': False, 'published': 'Tue, 19 Feb 2019 09:49 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=2, tm_mday=19, tm_hour=14, tm_min=49, tm_sec=0, tm_wday=1, tm_yday=50, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'NASA Glenn Keeps X-57 Cool', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'NASA Glenn Keeps X-57 Cool'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/nasa-glenn-keeps-x-57-cool'}, {'length': '2462169', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/grc-2018-c-09843.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/nasa-glenn-keeps-x-57-cool', 'summary': 'NASA is preparing to explore electric-powered flight with the X-57 Maxwell, a unique all-electric aircraft which features 14 propellers along its wing.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'NASA is preparing to explore electric-powered flight with the X-57 Maxwell, a unique all-electric aircraft which features 14 propellers along its wing.'}, 'id': 'http://www.nasa.gov/image-feature/nasa-glenn-keeps-x-57-cool', 'guidislink': False, 'published': 'Fri, 15 Feb 2019 08:45 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=2, tm_mday=15, tm_hour=13, tm_min=45, tm_sec=0, tm_wday=4, tm_yday=46, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Astronauts Train for the Boeing Crew Flight Test', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Astronauts Train for the Boeing Crew Flight Test'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/astronauts-train-for-the-boeing-crew-flight-test'}, {'length': '2827478', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/jsc2019e002964.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/astronauts-train-for-the-boeing-crew-flight-test', 'summary': "This preflight image from Feb. 6, 2019, shows NASA astronauts Mike Fincke and Nicole Mann and Boeing astronaut Chris Ferguson during spacewalk preparations and training inside the Space Station Airlock Mockup at NASA's Johnson Space Center in Houston.", 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': "This preflight image from Feb. 6, 2019, shows NASA astronauts Mike Fincke and Nicole Mann and Boeing astronaut Chris Ferguson during spacewalk preparations and training inside the Space Station Airlock Mockup at NASA's Johnson Space Center in Houston."}, 'id': 'http://www.nasa.gov/image-feature/astronauts-train-for-the-boeing-crew-flight-test', 'guidislink': False, 'published': 'Thu, 14 Feb 2019 06:28 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=2, tm_mday=14, tm_hour=11, tm_min=28, tm_sec=0, tm_wday=3, tm_yday=45, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': "Taking a Look Back at Opportunity's Record-Setting Mission", 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': "Taking a Look Back at Opportunity's Record-Setting Mission"}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/taking-a-look-back-at-opportunitys-record-setting-mission'}, {'length': '367939', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/sunset.jpeg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/taking-a-look-back-at-opportunitys-record-setting-mission', 'summary': "NASA's record-setting Opportunity rover mission on Mars comes to end.", 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': "NASA's record-setting Opportunity rover mission on Mars comes to end."}, 'id': 'http://www.nasa.gov/image-feature/taking-a-look-back-at-opportunitys-record-setting-mission', 'guidislink': False, 'published': 'Wed, 13 Feb 2019 12:57 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=2, tm_mday=13, tm_hour=17, tm_min=57, tm_sec=0, tm_wday=2, tm_yday=44, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Robert Curbeam: Building the Space Station, Making History', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Robert Curbeam: Building the Space Station, Making History'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/robert-curbeam-building-the-space-station-making-history'}, {'length': '1324739', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/iss014e10084.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/robert-curbeam-building-the-space-station-making-history', 'summary': 'Robert Curbeam currently holds the record for the most spacewalks during a single spaceflight.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Robert Curbeam currently holds the record for the most spacewalks during a single spaceflight.'}, 'id': 'http://www.nasa.gov/image-feature/robert-curbeam-building-the-space-station-making-history', 'guidislink': False, 'published': 'Tue, 12 Feb 2019 11:29 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=2, tm_mday=12, tm_hour=16, tm_min=29, tm_sec=0, tm_wday=1, tm_yday=43, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': "The Red Planet's Layered History", 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': "The Red Planet's Layered History"}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/the-red-planets-layered-history'}, {'length': '2159354', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/pia23059.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/the-red-planets-layered-history', 'summary': 'Erosion of the surface reveals several shades of light toned layers, likely sedimentary deposits, as shown in this image taken by the HiRISE camera on the Mars Reconnaissance Orbiter.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Erosion of the surface reveals several shades of light toned layers, likely sedimentary deposits, as shown in this image taken by the HiRISE camera on the Mars Reconnaissance Orbiter.'}, 'id': 'http://www.nasa.gov/image-feature/the-red-planets-layered-history', 'guidislink': False, 'published': 'Mon, 11 Feb 2019 11:28 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=2, tm_mday=11, tm_hour=16, tm_min=28, tm_sec=0, tm_wday=0, tm_yday=42, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Mary Jackson: A Life of Service and a Love of Science', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Mary Jackson: A Life of Service and a Love of Science'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/mary-jackson-a-life-of-service-and-a-love-of-science'}, {'length': '3221897', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/lrc-1977-b701_p-04107.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/mary-jackson-a-life-of-service-and-a-love-of-science', 'summary': 'Mary Jackson began her engineering career in an era in which female engineers of any background were a rarity.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Mary Jackson began her engineering career in an era in which female engineers of any background were a rarity.'}, 'id': 'http://www.nasa.gov/image-feature/mary-jackson-a-life-of-service-and-a-love-of-science', 'guidislink': False, 'published': 'Fri, 08 Feb 2019 13:00 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=2, tm_mday=8, tm_hour=18, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=39, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Vice President Attends NASA Day of Remembrance', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Vice President Attends NASA Day of Remembrance'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/vice-president-attends-nasa-day-of-remembrance'}, {'length': '955896', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/32079236047_1d7fa79e68_k.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/vice-president-attends-nasa-day-of-remembrance', 'summary': "Vice President Mike Pence visits the Space Shuttle Challenger Memorial after a wreath laying ceremony that was part of NASA's Day of Remembrance, Thursday, Feb. 7, 2019, at Arlington National Cemetery in Arlington, Va.", 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': "Vice President Mike Pence visits the Space Shuttle Challenger Memorial after a wreath laying ceremony that was part of NASA's Day of Remembrance, Thursday, Feb. 7, 2019, at Arlington National Cemetery in Arlington, Va."}, 'id': 'http://www.nasa.gov/image-feature/vice-president-attends-nasa-day-of-remembrance', 'guidislink': False, 'published': 'Thu, 07 Feb 2019 17:17 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=2, tm_mday=7, tm_hour=22, tm_min=17, tm_sec=0, tm_wday=3, tm_yday=38, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Apollo Astronaut Buzz Aldrin at the 2019 State of the Union', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Apollo Astronaut Buzz Aldrin at the 2019 State of the Union'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/apollo-astronaut-buzz-aldrin-at-the-2019-state-of-the-union'}, {'length': '1686955', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/020519-js4-1602.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/apollo-astronaut-buzz-aldrin-at-the-2019-state-of-the-union', 'summary': 'Astronaut Buzz Aldrin salutes after being introduced at the 2019 State of the Union address.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Astronaut Buzz Aldrin salutes after being introduced at the 2019 State of the Union address.'}, 'id': 'http://www.nasa.gov/image-feature/apollo-astronaut-buzz-aldrin-at-the-2019-state-of-the-union', 'guidislink': False, 'published': 'Wed, 06 Feb 2019 10:29 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=2, tm_mday=6, tm_hour=15, tm_min=29, tm_sec=0, tm_wday=2, tm_yday=37, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Star Formation in the Orion Nebula', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Star Formation in the Orion Nebula'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/star-formation-in-the-orion-nebula'}, {'length': '681974', 'type': 'image/png', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/orion-bubble.png', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/star-formation-in-the-orion-nebula', 'summary': 'The powerful wind from the newly formed star at the heart of the Orion Nebula is creating the bubble and preventing new stars from forming.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'The powerful wind from the newly formed star at the heart of the Orion Nebula is creating the bubble and preventing new stars from forming.'}, 'id': 'http://www.nasa.gov/image-feature/star-formation-in-the-orion-nebula', 'guidislink': False, 'published': 'Tue, 05 Feb 2019 12:48 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=2, tm_mday=5, tm_hour=17, tm_min=48, tm_sec=0, tm_wday=1, tm_yday=36, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': "Victor Glover, One of the Crew of SpaceX's First Flight to Station", 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': "Victor Glover, One of the Crew of SpaceX's First Flight to Station"}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/victor-glover-one-of-the-crew-of-spacexs-first-flight-to-station'}, {'length': '1497135', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/32318922958_528cbd3f50_o.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/victor-glover-one-of-the-crew-of-spacexs-first-flight-to-station', 'summary': "When SpaceX's Crew Dragon spacecraft lifts off on its first operational mission to the International Space Station, NASA astronaut Victor Glover will be aboard.", 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': "When SpaceX's Crew Dragon spacecraft lifts off on its first operational mission to the International Space Station, NASA astronaut Victor Glover will be aboard."}, 'id': 'http://www.nasa.gov/image-feature/victor-glover-one-of-the-crew-of-spacexs-first-flight-to-station', 'guidislink': False, 'published': 'Mon, 04 Feb 2019 13:50 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=2, tm_mday=4, tm_hour=18, tm_min=50, tm_sec=0, tm_wday=0, tm_yday=35, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Sunrise From Columbia', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Sunrise From Columbia'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/sunrise-from-columbia'}, {'length': '394092', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/s107e05485.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/sunrise-from-columbia', 'summary': 'On Jan. 22, 2003, the crew of Space Shuttle Columbia captured this sunrise from the crew cabin during Flight Day 7.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'On Jan. 22, 2003, the crew of Space Shuttle Columbia captured this sunrise from the crew cabin during Flight Day 7.'}, 'id': 'http://www.nasa.gov/image-feature/sunrise-from-columbia', 'guidislink': False, 'published': 'Fri, 01 Feb 2019 09:11 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=2, tm_mday=1, tm_hour=14, tm_min=11, tm_sec=0, tm_wday=4, tm_yday=32, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Hubble Accidentally Discovers a New Galaxy', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Hubble Accidentally Discovers a New Galaxy'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/hubble-accidentally-discovers-a-new-galaxy'}, {'length': '2701505', 'type': 'image/png', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/bedin1.png', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/hubble-accidentally-discovers-a-new-galaxy', 'summary': 'Despite the vastness of space, objects tend to get in front of each other.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Despite the vastness of space, objects tend to get in front of each other.'}, 'id': 'http://www.nasa.gov/image-feature/hubble-accidentally-discovers-a-new-galaxy', 'guidislink': False, 'published': 'Thu, 31 Jan 2019 11:34 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=1, tm_mday=31, tm_hour=16, tm_min=34, tm_sec=0, tm_wday=3, tm_yday=31, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Sailing Over the Caribbean From the International Space Station', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Sailing Over the Caribbean From the International Space Station'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/sailing-over-the-caribbean-from-the-international-space-station'}, {'length': '1107689', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/31988314307_fdfcdbd0b0_k.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/sailing-over-the-caribbean-from-the-international-space-station', 'summary': 'Portions of Cuba, the Bahamas and the Turks and Caicos Islands are viewed from the International Space Station.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Portions of Cuba, the Bahamas and the Turks and Caicos Islands are viewed from the International Space Station.'}, 'id': 'http://www.nasa.gov/image-feature/sailing-over-the-caribbean-from-the-international-space-station', 'guidislink': False, 'published': 'Wed, 30 Jan 2019 12:25 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=1, tm_mday=30, tm_hour=17, tm_min=25, tm_sec=0, tm_wday=2, tm_yday=30, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Falcon 9, Crew Dragon Roll to Launch Pad', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Falcon 9, Crew Dragon Roll to Launch Pad'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/falcon-9-crew-dragon-roll-to-launch-pad'}, {'length': '1760724', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/46907789351_b5d7dddb42_o.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/falcon-9-crew-dragon-roll-to-launch-pad', 'summary': 'Falcon 9, Crew Dragon Roll to Launch Pad', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Falcon 9, Crew Dragon Roll to Launch Pad'}, 'id': 'http://www.nasa.gov/image-feature/falcon-9-crew-dragon-roll-to-launch-pad', 'guidislink': False, 'published': 'Tue, 29 Jan 2019 11:06 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=1, tm_mday=29, tm_hour=16, tm_min=6, tm_sec=0, tm_wday=1, tm_yday=29, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Remembering Space Shuttle Challenger', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Remembering Space Shuttle Challenger'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/multimedia/imagegallery/image_gallery_2437.html'}, {'length': '5056465', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/images/722342main_challenger_full_full.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/multimedia/imagegallery/image_gallery_2437.html', 'summary': "NASA lost seven of its own on the morning of Jan. 28, 1986, when a booster engine failed, causing the Shuttle Challenger to break apart just 73 seconds after launch. In this photo from Jan. 9, 1986, the Challenger crew takes a break during countdown training at NASA's Kennedy Space Center.", 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': "NASA lost seven of its own on the morning of Jan. 28, 1986, when a booster engine failed, causing the Shuttle Challenger to break apart just 73 seconds after launch. In this photo from Jan. 9, 1986, the Challenger crew takes a break during countdown training at NASA's Kennedy Space Center."}, 'id': 'http://www.nasa.gov/multimedia/imagegallery/image_gallery_2437.html', 'guidislink': False, 'published': 'Mon, 28 Jan 2019 11:12 EST', 'published_parsed': time.struct_time(tm_year=2019, tm_mon=1, tm_mday=28, tm_hour=16, tm_min=12, tm_sec=0, tm_wday=0, tm_yday=28, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': "Celebrating the 50th Anniversary of Apollo 8's Launch Into History", 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': "Celebrating the 50th Anniversary of Apollo 8's Launch Into History"}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/celebrating-the-50th-anniversary-of-apollo-8s-launch-into-history'}, {'length': '2210687', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/s68-56050.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/celebrating-the-50th-anniversary-of-apollo-8s-launch-into-history', 'summary': 'Fifty years ago on Dec. 21, 1968, Apollo 8 launched from Pad A, Launch Complex 39, Kennedy Space Center at 7:51 a.m. ES).', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Fifty years ago on Dec. 21, 1968, Apollo 8 launched from Pad A, Launch Complex 39, Kennedy Space Center at 7:51 a.m. ES).'}, 'id': 'http://www.nasa.gov/image-feature/celebrating-the-50th-anniversary-of-apollo-8s-launch-into-history', 'guidislink': False, 'published': 'Fri, 21 Dec 2018 09:02 EST', 'published_parsed': time.struct_time(tm_year=2018, tm_mon=12, tm_mday=21, tm_hour=14, tm_min=2, tm_sec=0, tm_wday=4, tm_yday=355, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Station Crew Back on Earth After 197-Day Space Mission', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Station Crew Back on Earth After 197-Day Space Mission'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/station-crew-back-on-earth-after-197-day-space-mission'}, {'length': '620757', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/32518530168_88a2729274_k_1.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/station-crew-back-on-earth-after-197-day-space-mission', 'summary': 'Russian Search and Rescue teams arrive at the Soyuz MS-09 spacecraft shortly after it landed with Expedition 57 crew members.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Russian Search and Rescue teams arrive at the Soyuz MS-09 spacecraft shortly after it landed with Expedition 57 crew members.'}, 'id': 'http://www.nasa.gov/image-feature/station-crew-back-on-earth-after-197-day-space-mission', 'guidislink': False, 'published': 'Thu, 20 Dec 2018 10:05 EST', 'published_parsed': time.struct_time(tm_year=2018, tm_mon=12, tm_mday=20, tm_hour=15, tm_min=5, tm_sec=0, tm_wday=3, tm_yday=354, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'SpaceX’s Crew Dragon Spacecraft and Falcon 9 Rocket', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'SpaceX’s Crew Dragon Spacecraft and Falcon 9 Rocket'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/spacex-s-crew-dragon-spacecraft-and-falcon-9-rocket'}, {'length': '1885477', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/dm-1-20181218-129a8083-2-apprvd.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/spacex-s-crew-dragon-spacecraft-and-falcon-9-rocket', 'summary': 'SpaceX’s Crew Dragon spacecraft and Falcon 9 rocket are positioned at the company’s hangar at Launch Complex 39A at NASA’s Kennedy Space Center in Florida, ahead of the test targeted for Jan. 17, 2019.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'SpaceX’s Crew Dragon spacecraft and Falcon 9 rocket are positioned at the company’s hangar at Launch Complex 39A at NASA’s Kennedy Space Center in Florida, ahead of the test targeted for Jan. 17, 2019.'}, 'id': 'http://www.nasa.gov/image-feature/spacex-s-crew-dragon-spacecraft-and-falcon-9-rocket', 'guidislink': False, 'published': 'Wed, 19 Dec 2018 11:07 EST', 'published_parsed': time.struct_time(tm_year=2018, tm_mon=12, tm_mday=19, tm_hour=16, tm_min=7, tm_sec=0, tm_wday=2, tm_yday=353, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Testing the Space Launch System', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Testing the Space Launch System'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/testing-the-space-launch-system'}, {'length': '3083141', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/maf_20181126_p_lh2_lift_onto_aft_sim-42.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/testing-the-space-launch-system', 'summary': 'Engineers built a tank identical to the Space Launch System tank that will be flown on Exploration Mission-1, the first flight of Space Launch System and the Orion spacecraft for testing.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Engineers built a tank identical to the Space Launch System tank that will be flown on Exploration Mission-1, the first flight of Space Launch System and the Orion spacecraft for testing.'}, 'id': 'http://www.nasa.gov/image-feature/testing-the-space-launch-system', 'guidislink': False, 'published': 'Tue, 18 Dec 2018 10:28 EST', 'published_parsed': time.struct_time(tm_year=2018, tm_mon=12, tm_mday=18, tm_hour=15, tm_min=28, tm_sec=0, tm_wday=1, tm_yday=352, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': '115 Years of Flight', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': '115 Years of Flight'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/115-years-of-flight-0'}, {'length': '1035710', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/wrightflyer.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/115-years-of-flight-0', 'summary': 'For most of human history, we mortals have dreamed of taking to the skies. Then, 115 years ago on on December 17, 1903, Orville and Wilbur Wright achieved the impossbile.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'For most of human history, we mortals have dreamed of taking to the skies. Then, 115 years ago on on December 17, 1903, Orville and Wilbur Wright achieved the impossbile.'}, 'id': 'http://www.nasa.gov/image-feature/115-years-of-flight-0', 'guidislink': False, 'published': 'Mon, 17 Dec 2018 11:02 EST', 'published_parsed': time.struct_time(tm_year=2018, tm_mon=12, tm_mday=17, tm_hour=16, tm_min=2, tm_sec=0, tm_wday=0, tm_yday=351, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Giant Black Hole Powers Cosmic Fountain', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Giant Black Hole Powers Cosmic Fountain'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/giant-black-hole-powers-cosmic-fountain'}, {'length': '1209648', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/a2597_0.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/giant-black-hole-powers-cosmic-fountain', 'summary': 'Before electricity, water fountains worked by relying on gravity to channel water from a higher elevation to a lower one. In space, awesome gaseous fountains have been discovered in the centers of galaxy clusters.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Before electricity, water fountains worked by relying on gravity to channel water from a higher elevation to a lower one. In space, awesome gaseous fountains have been discovered in the centers of galaxy clusters.'}, 'id': 'http://www.nasa.gov/image-feature/giant-black-hole-powers-cosmic-fountain', 'guidislink': False, 'published': 'Fri, 14 Dec 2018 10:30 EST', 'published_parsed': time.struct_time(tm_year=2018, tm_mon=12, tm_mday=14, tm_hour=15, tm_min=30, tm_sec=0, tm_wday=4, tm_yday=348, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Astronauts Anne McClain and Serena Auñón-Chancellor Work Aboard the Station', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Astronauts Anne McClain and Serena Auñón-Chancellor Work Aboard the Station'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/astronauts-anne-mcclain-and-serena-au-n-chancellor-work-aboard-the-station'}, {'length': '4332027', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/iss057e114340_0.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/astronauts-anne-mcclain-and-serena-au-n-chancellor-work-aboard-the-station', 'summary': 'NASA astronauts Anne McClain (background) and Serena Auñón-Chancellor are pictured inside the U.S. Destiny laboratory module aboard the International Space Station.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'NASA astronauts Anne McClain (background) and Serena Auñón-Chancellor are pictured inside the U.S. Destiny laboratory module aboard the International Space Station.'}, 'id': 'http://www.nasa.gov/image-feature/astronauts-anne-mcclain-and-serena-au-n-chancellor-work-aboard-the-station', 'guidislink': False, 'published': 'Thu, 13 Dec 2018 09:38 EST', 'published_parsed': time.struct_time(tm_year=2018, tm_mon=12, tm_mday=13, tm_hour=14, tm_min=38, tm_sec=0, tm_wday=3, tm_yday=347, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Spirit of Apollo - 50th Anniversary of Apollo 8 at the Washington National Cathedral', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Spirit of Apollo - 50th Anniversary of Apollo 8 at the Washington National Cathedral'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/spirit-of-apollo-50th-anniversary-of-apollo-8-at-the-washington-national-cathedral'}, {'length': '20305142', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/spirit_of_apollo_washington_national_cathedral_for_50th_anniversary_of_apollo_8_0.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/spirit-of-apollo-50th-anniversary-of-apollo-8-at-the-washington-national-cathedral', 'summary': "The Washington National Cathedral is seen lit up with space imagery prior to the Smithsonian National Air and Space Museum's Spirit of Apollo event commemorating the 50th anniversary of Apollo 8, Tuesday, Dec. 11, 2018 in Washington, DC.", 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': "The Washington National Cathedral is seen lit up with space imagery prior to the Smithsonian National Air and Space Museum's Spirit of Apollo event commemorating the 50th anniversary of Apollo 8, Tuesday, Dec. 11, 2018 in Washington, DC."}, 'id': 'http://www.nasa.gov/image-feature/spirit-of-apollo-50th-anniversary-of-apollo-8-at-the-washington-national-cathedral', 'guidislink': False, 'published': 'Wed, 12 Dec 2018 14:21 EST', 'published_parsed': time.struct_time(tm_year=2018, tm_mon=12, tm_mday=12, tm_hour=19, tm_min=21, tm_sec=0, tm_wday=2, tm_yday=346, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'ICESat-2 Reveals Profile of Ice Sheets', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'ICESat-2 Reveals Profile of Ice Sheets'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/icesat-2-reveals-profile-of-ice-sheets'}, {'length': '974620', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/seaice11.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/icesat-2-reveals-profile-of-ice-sheets', 'summary': 'Less than three months into its mission, NASA’s Ice, Cloud and land Elevation Satellite-2, or ICESat-2, is already exceeding scientists’ expectations.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Less than three months into its mission, NASA’s Ice, Cloud and land Elevation Satellite-2, or ICESat-2, is already exceeding scientists’ expectations.'}, 'id': 'http://www.nasa.gov/image-feature/icesat-2-reveals-profile-of-ice-sheets', 'guidislink': False, 'published': 'Tue, 11 Dec 2018 09:09 EST', 'published_parsed': time.struct_time(tm_year=2018, tm_mon=12, tm_mday=11, tm_hour=14, tm_min=9, tm_sec=0, tm_wday=1, tm_yday=345, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': "Viewing the Approach of SpaceX's Dragon to the Space Station", 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': "Viewing the Approach of SpaceX's Dragon to the Space Station"}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/viewing-the-approach-of-spacexs-dragon-to-the-space-station'}, {'length': '742769', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/45532312914_2634bd334e_k.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/viewing-the-approach-of-spacexs-dragon-to-the-space-station', 'summary': 'International Space Station Commander Alexander Gerst viewed SpaceX’s Dragon cargo craft chasing the orbital laboratory on Dec. 8, 2018 and took a series of photos.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'International Space Station Commander Alexander Gerst viewed SpaceX’s Dragon cargo craft chasing the orbital laboratory on Dec. 8, 2018 and took a series of photos.'}, 'id': 'http://www.nasa.gov/image-feature/viewing-the-approach-of-spacexs-dragon-to-the-space-station', 'guidislink': False, 'published': 'Mon, 10 Dec 2018 11:10 EST', 'published_parsed': time.struct_time(tm_year=2018, tm_mon=12, tm_mday=10, tm_hour=16, tm_min=10, tm_sec=0, tm_wday=0, tm_yday=344, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': "Astronaut Anne McClain's First Voyage to the Space Station", 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': "Astronaut Anne McClain's First Voyage to the Space Station"}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/astronaut-anne-mcclains-first-voyage-to-the-space-station'}, {'length': '2277660', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/anne.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/astronaut-anne-mcclains-first-voyage-to-the-space-station', 'summary': '"Putting this journey into words will not be easy, but I will try. I am finally where I was born to be," said astronaut Anne McClain of her first voyage to space.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': '"Putting this journey into words will not be easy, but I will try. I am finally where I was born to be," said astronaut Anne McClain of her first voyage to space.'}, 'id': 'http://www.nasa.gov/image-feature/astronaut-anne-mcclains-first-voyage-to-the-space-station', 'guidislink': False, 'published': 'Fri, 07 Dec 2018 10:48 EST', 'published_parsed': time.struct_time(tm_year=2018, tm_mon=12, tm_mday=7, tm_hour=15, tm_min=48, tm_sec=0, tm_wday=4, tm_yday=341, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Researching Supersonic Flight', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Researching Supersonic Flight'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/researching-supersonic-flight'}, {'length': '451454', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/afrc2018-0287-193small.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/researching-supersonic-flight', 'summary': 'This image of the horizon is as it was seen from the cockpit of NASA Armstrong Flight Research Center’s F/A-18 research aircraft.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'This image of the horizon is as it was seen from the cockpit of NASA Armstrong Flight Research Center’s F/A-18 research aircraft.'}, 'id': 'http://www.nasa.gov/image-feature/researching-supersonic-flight', 'guidislink': False, 'published': 'Tue, 04 Dec 2018 12:00 EST', 'published_parsed': time.struct_time(tm_year=2018, tm_mon=12, tm_mday=4, tm_hour=17, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=338, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}, {'title': 'Newest Crew Launches for the International Space Station', 'title_detail': {'type': 'text/plain', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Newest Crew Launches for the International Space Station'}, 'links': [{'rel': 'alternate', 'type': 'text/html', 'href': 'http://www.nasa.gov/image-feature/newest-crew-launches-for-the-international-space-station'}, {'length': '749641', 'type': 'image/jpeg', 'href': 'http://www.nasa.gov/sites/default/files/thumbnails/image/45248114015_bf5ebaf3e9_k.jpg', 'rel': 'enclosure'}], 'link': 'http://www.nasa.gov/image-feature/newest-crew-launches-for-the-international-space-station', 'summary': 'Soyuz MS-11 spacecraft launched from the Baikonur Cosmodrome in Kazakhstan to bring a new crew to begin their six and a half month mission on the International Space Station.', 'summary_detail': {'type': 'text/html', 'language': 'en', 'base': 'http://www.nasa.gov/', 'value': 'Soyuz MS-11 spacecraft launched from the Baikonur Cosmodrome in Kazakhstan to bring a new crew to begin their six and a half month mission on the International Space Station.'}, 'id': 'http://www.nasa.gov/image-feature/newest-crew-launches-for-the-international-space-station', 'guidislink': False, 'published': 'Mon, 03 Dec 2018 08:49 EST', 'published_parsed': time.struct_time(tm_year=2018, tm_mon=12, tm_mday=3, tm_hour=13, tm_min=49, tm_sec=0, tm_wday=0, tm_yday=337, tm_isdst=0), 'source': {'href': 'http://www.nasa.gov/rss/dyn/image_of_the_day.rss', 'title': 'NASA Image of the Day'}}]
  2. 60

RSS源分类器及高频词去除函数

  1. def calcMostFreq(vocabList, fullText):
  2. # 计算出现频率
  3. import operator
  4. freqDict = {}
  5. for token in vocabList:
  6. freqDict[token] = fullText.count(token)
  7. sortedFreq = sorted(freqDict.items(), key=operator.itemgetter(1), reverse=True)
  8. return sortedFreq[:10]
  9. def stopWords():
  10. import re
  11. wordList = open('stopwords.txt').read()
  12. listOfTokens = re.split(r'\W+', wordList)
  13. listOfTokens = [tok.lower() for tok in listOfTokens]
  14. return listOfTokens
  15. def localWords(feed1, feed0):
  16. import feedparser
  17. docList = []; classList = []; fullText = []
  18. minLen = min(len(feed1['entries']), len(feed0['entries']))
  19. for i in range(minLen):
  20. # 每次访问一条RSS源
  21. wordList = textParse(feed1['entries'][i]['summary'])
  22. docList.append(wordList)
  23. fullText.extend(wordList)
  24. classList.append(1)
  25. wordList = textParse(feed0['entries'][i]['summary'])
  26. docList.append(wordList)
  27. fullText.extend(wordList)
  28. classList.append(0)
  29. vocabList = createVocabList(docList)
  30. # 去掉出现次数最高的那些词
  31. top10Words = calcMostFreq(vocabList, fullText)
  32. for pairW in top10Words:
  33. if pairW[0] in vocabList:
  34. vocabList.remove(pairW[0])
  35. # 移除停用词
  36. stopWordList = stopWords()
  37. for stopWord in stopWordList:
  38. if stopWord in vocabList:
  39. vocabList.remove(stopWord)
  40. trainingSet = list(range(2*minLen)); testSet = []
  41. for i in range(10):
  42. randIndex = int(random.uniform(0, len(trainingSet)))
  43. testSet.append(trainingSet[randIndex])
  44. del(trainingSet[randIndex])
  45. trainMat = []; trainClasses = []
  46. for docIndex in trainingSet:
  47. trainMat.append(bagOfWords2VecMN(vocabList, docList[docIndex]))
  48. trainClasses.append(classList[docIndex])
  49. p0V, p1V, pSpam = trainNB1(array(trainMat), array(trainClasses))
  50. errorCount = 0
  51. for docIndex in testSet:
  52. wordVector = bagOfWords2VecMN(vocabList, docList[docIndex])
  53. if classifyNB(array(wordVector), p0V, p1V, pSpam) != classList[docIndex]:
  54. errorCount += 1
  55. print('the error rate is: ', float(errorCount)/len(testSet))
  56. return vocabList, p1V, p0V
  1. ny=feedparser.parse('https://newyork.craigslist.org/search/res?format=rss')
  2. sf=feedparser.parse('https://sfbay.craigslist.org/search/apa?format=rss')
  3. print(len(ny['entries']))
  4. print(len(sf['entries']))
  5. vocabList, pNY, pSF = localWords(ny, sf)
  1. 25
  2. 25
  3. the error rate is: 0.1

移除高频词,是因为语言中大部分都是冗余和结构辅助性内容。

另一个常用的方法是不仅移除高频词,同时从某个预定词表中移除结构上的辅助词。该词表称为停用词表https://www.ranks.nl/stopwords

6.2 分析数据:显示地域相关的用词

最具表征性的词汇显示函数

  1. def getTopWords(ny, sf):
  2. import operator
  3. vocabList, p0V, p1V = localWords(ny, sf)
  4. topNY = []; topSF = []
  5. for i in range(len(p0V)):
  6. if p0V[i] > -6.0:
  7. topSF.append((vocabList[i], p0V[i]))
  8. if p1V[i] > -6.0:
  9. topNY.append((vocabList[i], p1V[i]))
  10. sortedSF = sorted(topSF, key=lambda pair: pair[1], reverse=True)
  11. print("SF**SF**SF**SF**SF**SF**SF**SF**SF**")
  12. for item in sortedSF:
  13. print(item[0])
  14. sortedNY = sorted(topNY, key=lambda pair: pair[1], reverse=True)
  15. print("NY**NY**NY**NY**NY**NY**NY**NY**NY**")
  16. for item in sortedNY:
  17. print(item[0])
getTopWords(ny, sf)
  1. the error rate is: 0.3
  2. SF**SF**SF**SF**SF**SF**SF**SF**SF**
  3. experience
  4. amp
  5. job
  6. services
  7. looking
  8. marketing
  9. provide
  10. experienced
  11. time
  12. please
  13. money
  14. online
  15. specialty
  16. com
  17. virtual
  18. reseller
  19. support
  20. work
  21. lot
  22. postings
  23. delivery
  24. personal
  25. interested
  26. budgets
  27. female
  28. just
  29. wolf
  30. position
  31. starting
  32. shopper
  33. well
  34. help
  35. copy
  36. picks
  37. packages
  38. one
  39. enable
  40. need
  41. tasty
  42. spending
  43. clients
  44. photos
  45. leads
  46. assistance
  47. part
  48. descriptions
  49. research
  50. without
  51. willing
  52. item
  53. big
  54. hour
  55. errands
  56. ride
  57. top
  58. people
  59. businesses
  60. expertise
  61. products
  62. years
  63. get
  64. contact
  65. email
  66. monthly
  67. anais
  68. clean
  69. skills
  70. pricing
  71. https
  72. sounds
  73. tests
  74. true
  75. good
  76. superv
  77. outpatient
  78. service
  79. white
  80. cacaoethescribendi
  81. prescription
  82. content
  83. home
  84. hope
  85. pdf
  86. jobs
  87. summer
  88. reclaim
  89. paralegal
  90. sell
  91. run
  92. calendar
  93. lawyer
  94. startups
  95. proud
  96. choir
  97. information
  98. technician
  99. year
  100. electronics
  101. straightforward
  102. film
  103. independently
  104. building
  105. director
  106. text
  107. experiences
  108. w0rd
  109. last
  110. licensing
  111. pos
  112. rate
  113. wordpress
  114. upside
  115. expand
  116. punctual
  117. degree
  118. black
  119. cashiers
  120. location
  121. woman
  122. island
  123. yes
  124. communications
  125. dishwasher
  126. world
  127. social
  128. f0rmat
  129. relisting
  130. clothing
  131. regarding
  132. business
  133. courier
  134. professionally
  135. take
  136. person
  137. http
  138. scimcoating
  139. journalist
  140. quickly
  141. isnt
  142. free
  143. wanted
  144. billy
  145. vocalist
  146. short
  147. cardiovascular
  148. producer
  149. taper
  150. legal
  151. predetermined
  152. century
  153. school
  154. walker
  155. startup
  156. commercial
  157. new
  158. assistant
  159. cashier
  160. offering
  161. shopping
  162. articles
  163. via
  164. hello
  165. layersofv
  166. affordable
  167. 2018
  168. pharmacy
  169. hey
  170. open
  171. option
  172. versatile
  173. offer
  174. listing
  175. 23yrs
  176. york
  177. fast
  178. even
  179. corporate
  180. 446k
  181. department
  182. sonyc
  183. excellent
  184. will
  185. plenty
  186. clinic
  187. studies
  188. hear
  189. thanks
  190. practice
  191. around
  192. level
  193. soon
  194. typing
  195. rican
  196. within
  197. etc
  198. stories
  199. effective
  200. based
  201. satisfy
  202. resume
  203. pay
  204. data
  205. messenger
  206. realize
  207. samples
  208. happy
  209. old
  210. arawumi
  211. proofreading
  212. present
  213. media
  214. marketer
  215. nonprofits
  216. coveted
  217. copywriting
  218. program
  219. lost
  220. bronx
  221. patient
  222. name
  223. pile
  224. typical
  225. limited
  226. client
  227. provided
  228. select
  229. painter
  230. note
  231. collection
  232. assist
  233. soundcloud
  234. partners
  235. motivated
  236. cpa
  237. full
  238. care
  239. reduced
  240. link
  241. hardworking
  242. minute
  243. 162k
  244. potential
  245. rent
  246. according
  247. budget
  248. thank
  249. associate
  250. list
  251. tech
  252. freelance
  253. updating
  254. therefore
  255. affordably
  256. really
  257. collaborations
  258. gift
  259. responsible
  260. collaboration
  261. handova
  262. pleas
  263. derek
  264. brooklyn
  265. extra
  266. hospital
  267. house
  268. request
  269. edge
  270. puerto
  271. odd
  272. interpersonal
  273. video
  274. budgeting
  275. wants
  276. secured
  277. retail
  278. writing
  279. boss
  280. upon
  281. queens
  282. music
  283. clerk
  284. per
  285. essays
  286. tobi
  287. 235q
  288. make
  289. canadian
  290. 21st
  291. writer
  292. february
  293. fandalism
  294. base
  295. seeking
  296. price
  297. death
  298. fertility
  299. qualit
  300. history
  301. huge
  302. runs
  303. multiple
  304. cleaning
  305. course
  306. long
  307. concept
  308. NY**NY**NY**NY**NY**NY**NY**NY**NY**
  309. close
  310. great
  311. location
  312. bathroom
  313. bath
  314. hardwood
  315. unit
  316. kitchen
  317. shopping
  318. coming
  319. space
  320. soon
  321. house
  322. entrances
  323. apartments
  324. home
  325. room
  326. 2019
  327. laundry
  328. floor
  329. located
  330. tops
  331. remodeled
  332. living
  333. valley
  334. beautiful
  335. one
  336. rent
  337. near
  338. floors
  339. freeway
  340. quiet
  341. centers
  342. amp
  343. rooms
  344. 1200
  345. colony
  346. silicon
  347. inside
  348. laminate
  349. hello
  350. duplex
  351. parking
  352. sunnyvale
  353. approx
  354. storage
  355. glen
  356. 30th
  357. heart
  358. berdroom
  359. conveniently
  360. restaurants
  361. separate
  362. tech
  363. firms
  364. countless
  365. cupertino
  366. includes
  367. april
  368. private
  369. perfect
  370. major
  371. manor
  372. campus
  373. updated
  374. enough
  375. three
  376. newpark
  377. patio
  378. spacious
  379. complex
  380. 2017
  381. block
  382. heating
  383. country
  384. nice
  385. granite
  386. site
  387. easy
  388. pay
  389. counter
  390. grand
  391. show
  392. eyrie
  393. currently
  394. appointment
  395. security
  396. drive
  397. measured
  398. water
  399. garbage
  400. 900
  401. 500
  402. throughout
  403. downstairs
  404. luxury
  405. vineyard
  406. two
  407. top
  408. pics
  409. high
  410. beautifully
  411. dryer
  412. central
  413. covered
  414. washer
  415. jun1
  416. north
  417. neighborhood
  418. gorgeous
  419. upgraded
  420. recycling
  421. supermarkets
  422. san
  423. freshly
  424. painted
  425. flooring
  426. lake
  427. inc
  428. victorian
  429. molding
  430. market
  431. noise
  432. wine
  433. district
  434. bri
  435. immed
  436. theater
  437. please
  438. newly
  439. attractive
  440. millbrae
  441. find
  442. acalanes
  443. oven
  444. bed
  445. napa
  446. end
  447. area
  448. deck
  449. lots
  450. deserve
  451. building
  452. jacuzzi
  453. included
  454. setting
  455. unfurnished
  456. irma
  457. tile
  458. 150
  459. restaur
  460. small
  461. enjoy
  462. dishwasher
  463. francisco
  464. ceilings
  465. professionally
  466. refrigerators
  467. murchison
  468. customized
  469. bart
  470. short
  471. hard
  472. best
  473. come
  474. commute
  475. school
  476. enclosed
  477. sides
  478. south
  479. ground
  480. built
  481. new
  482. far
  483. schedule
  484. back
  485. offering
  486. see
  487. law
  488. open
  489. sunlight
  490. tranquil
  491. farmers
  492. special
  493. broadway
  494. deposit
  495. towers
  496. lion
  497. 10am
  498. crown
  499. roommates
  500. photo
  501. shared
  502. antique
  503. bustling
  504. 94611
  505. quartz
  506. welcome
  507. executive
  508. 4pm
  509. leads
  510. street
  511. management
  512. glass
  513. plaza
  514. tub
  515. owned
  516. hea
  517. 1109
  518. halfway
  519. perfectly
  520. roger
  521. door
  522. coffee
  523. xpiedmont
  524. 495rent
  525. garden
  526. feel
  527. link
  528. viewing
  529. nearly
  530. features
  531. gibson
  532. jose
  533. closet
  534. center
  535. super
  536. furniture
  537. 02071565
  538. walk
  539. managed
  540. 94030
  541. showings
  542. sunroom
  543. court
  544. sinks
  545. minutes
  546. additional
  547. people
  548. windows
  549. fou
  550. request
  551. shops
  552. newer
  553. portfolio
  554. walnut
  555. ceiling
  556. condominiums
  557. oakland
  558. 101
  559. dining
  560. foyer
  561. mall
  562. 103
  563. dre
  564. cameras
  565. food
  566. entertaining
  567. beam
  568. bio
  569. individually
  570. make
  571. access
  572. chef
  573. email
  574. sliding
  575. apartment
  576. ave
  577. creek
  578. call
  579. facing
  580. clean
  581. huge
  582. sitting
  583. charming
  584. village
  585. modern

转载于:https://my.oschina.net/u/4004713/blog/3031845

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/290269
推荐阅读
相关标签
  

闽ICP备14008679号