【Python 機器學習實戰】樸素貝葉斯

1、基於貝葉斯決策理論的分類方法

  • 優勢:在數據較少的狀況下仍然有效,能夠處理多類別問題。
  • 缺點:對於輸入數據的準備方式較爲敏感。
  • 適用數據類型:標稱型數據。

貝葉斯決策理論的核心思想:即選擇具備最高几率的決策。html

2、條件機率

條件機率:P(A|B) = P(AB)/P(B)python

貝葉斯準則:p(c|x) = p(x|c)p(c) / p(x)ios

3、使用樸素貝葉斯進行文檔分類

樸素貝葉斯的通常過程:算法

  1. 收集數據:可使用任何方法。
  2. 準備數據:須要數值型或者布爾型數據。
  3. 分析數據:有大量特徵時,繪製特徵做用不大,此時使用直方圖效果更好。
  4. 訓練算法:計算不一樣的獨立特徵的條件機率。
  5. 測試算法:計算錯誤率。
  6. 使用算法:一個常見的樸素貝葉斯應用是文檔分類。能夠在任意的分類場景中使用樸素貝葉斯分類器,不必定非要是文本。

4、使用Python進行文本分類

4.1 準備數據:從文本中構建詞向量

詞表到向量的轉換函數windows

樸素貝葉斯分類器一般有兩種實現方式:一種基於貝努利模型實現,一種基於多項式模型實現。 這裏採用前一種實現方式。該實現方式中並不考慮詞在文檔中出現的次數,只考慮出不出現,所以在這個意義上至關於假設詞是等權重的。app

# 建立實驗樣本
def loadDataSet():
    postingList = [['my', 'dog', 'has', 'flea', \
                    'problems', 'help', 'please'],
                   ['maybe', 'not', 'take', 'him', \
                    'to', 'dog', 'park', 'stupid'],
                   ['my', 'dalmation', 'is', 'so', 'cute', \
                    'I', 'love', 'him'],
                   ['stop', 'posting', 'stupid', 'worthless', 'garbage'],
                   ['mr', 'licks', 'ate', 'my', 'steak', 'how', \
                    'to', 'stop', 'him'],
                   ['quit', 'buying', 'worthless', 'dog', 'food', 'stupid']]
    classVec = [0, 1, 0, 1, 0, 1]  # 1 表明侮辱性文字,0 表明正常言論
    # postingList:進行詞條切分後的文檔集合,這些文檔來自斑點犬愛好者留言板
    # classVec:類別標籤。文本類別由人工標註
    return postingList, classVec


# 建立一個包含在全部文檔中出現的不重複詞的列表
def createVocabList(dataSet):
    vocabSet = set([])  # 建立一個空集
    for document in dataSet:
        vocabSet = vocabSet | set(document)  # 建立兩個集合的並集
    return list(vocabSet)


def setOfWords2Vec(vocabList, inputSet):
    returnVec = [0] * len(vocabList)  # 建立一個其中所含元素都爲0的向量,與詞彙表等長
    for word in inputSet:
        if word in vocabList:
            returnVec[vocabList.index(word)] = 1
        else:
            print("the word: %s is not in my Vocabulary!" % word)
    return returnVec
listOPosts, listClasses = loadDataSet()
myVocabList = createVocabList(listOPosts)
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表示這是一個向量,即它由多個數值組成,數值個數與詞彙表中的詞個數相同。less

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

使用上述公式,對每一個類計算該值,而後比較這兩個機率值的大小。electron

p(ci) = 類別i(侮辱性或非侮辱性留言)中文檔數 / 總文檔數ionic

接着計算p(w|ci),用到樸素貝葉斯假設。 若是將w展開爲一個個獨立特徵,那麼就能夠將上述機率寫做p(w0, w1,..wN|ci)。 這裏假設全部詞都相互獨立,該假設也稱做條件獨立性假設,它意味着可使用p(w0|ci)p(w1|ci)..p(wN|ci)來計算上述機率

僞代碼以下:

計算每一個類別中的文檔數目
對每篇訓練文檔:
    對每一個類別:
        若是詞條出現文檔中➡️增長該詞條的計數值
        增長全部詞條的計數值
    對每一個類別:
        對每一個詞條:
            將該詞條的數目除以總詞條數目獲得條件機率
    返回每一個類別的條件機率

樸素貝葉斯分類器訓練函數

from numpy import *
# trainMatrix:文檔矩陣
# trainCategory:由每篇文檔類別標籤所構成的向量
def trainNB0(trainMatrix, trainCategory):
    numTrainDocs = len(trainMatrix)  # 文檔總數
    numWords = len(trainMatrix[0])  # 詞彙表長度
    # 計算文檔屬於侮辱性文檔(class=1)的機率
    pAbusive = sum(trainCategory) / float(numTrainDocs)
    # 初始化機率
    p0Num = zeros(numWords); p1Num = zeros(numWords)
    p0Denom = 0.0; p1Denom = 0.0
    for i in range(numTrainDocs):
        if trainCategory[i] == 1:
            # 向量相加
            p1Num += trainMatrix[i]  # 全部侮辱性文檔中每一個詞向量出現個數
            p1Denom += sum(trainMatrix[i])  # 侮辱性文檔總詞數
        else:
            p0Num += trainMatrix[i]
            p0Denom += sum(trainMatrix[i])
    # 對每一個元素作除法
    p1Vect = p1Num / p1Denom  # change to log()
    p0Vect = p0Num / p0Denom
    return p0Vect, p1Vect, pAbusive
trainMat = []  # 文檔向量矩陣
for postinDoc in listOPosts:
    trainMat.append(setOfWords2Vec(myVocabList, postinDoc))
p0V, p1V, pAb = trainNB0(trainMat, listClasses)
print(pAb)
0.5
print(p0V)
[0.04166667 0.         0.         0.         0.         0.
 0.04166667 0.08333333 0.04166667 0.04166667 0.04166667 0.
 0.04166667 0.         0.         0.04166667 0.04166667 0.04166667
 0.04166667 0.         0.04166667 0.04166667 0.04166667 0.04166667
 0.04166667 0.04166667 0.04166667 0.         0.         0.04166667
 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)。能夠避免下溢出或者浮點數舍入致使的錯誤,也不會有任何損失。

def trainNB1(trainMatrix, trainCategory):
    numTrainDocs = len(trainMatrix)  # 文檔總數
    numWords = len(trainMatrix[0])  # 詞彙表長度
    # 計算文檔屬於侮辱性文檔(class=1)的機率
    pAbusive = sum(trainCategory) / float(numTrainDocs)
    # 初始化機率
    p0Num = ones(numWords); p1Num = ones(numWords)
    p0Denom = 2.0; p1Denom = 2.0
    for i in range(numTrainDocs):
        if trainCategory[i] == 1:
            # 向量相加
            p1Num += trainMatrix[i]  # 全部侮辱性文檔中每一個詞向量出現個數
            p1Denom += sum(trainMatrix[i])  # 侮辱性文檔總詞數
        else:
            p0Num += trainMatrix[i]
            p0Denom += sum(trainMatrix[i])
    # 對每一個元素作除法
    p1Vect = log(p1Num / p1Denom) 
    p0Vect = log(p0Num / p0Denom)
    return p0Vect, p1Vect, pAbusive

樸素貝葉斯分類函數

# vec2Classify爲要分類的向量
def classifyNB(vec2Classify, p0Vec, p1Vec, pClass1):
    # 相乘是指對應元素相乘
    p1 = sum(vec2Classify * p1Vec) + log(pClass1)
    p0 = sum(vec2Classify * p0Vec) + log(1.0 - pClass1)
    if p1 > p0:
        return 1
    else:
        return 0
    

def testingNB():
    listOPosts, listClasses = loadDataSet()
    myVocabList = createVocabList(listOPosts)
    trainMat = []
    for postingDoc in listOPosts:
        trainMat.append(setOfWords2Vec(myVocabList, postingDoc))
    p0V, p1V, pAb = trainNB1(array(trainMat), array(listClasses))
    testEntry = ['love', 'my', 'dalmation']
    thisDoc = array(setOfWords2Vec(myVocabList, testEntry))
    print(testEntry, 'classified as: ', classifyNB(thisDoc, p0V, p1V, pAb))
    testEntry = ['stupid', 'garbage']
    thisDoc = array(setOfWords2Vec(myVocabList, testEntry))
    print(testEntry, 'classified as: ', classifyNB(thisDoc, p0V, p1V, pAb))
testingNB()
['love', 'my', 'dalmation'] classified as:  0
['stupid', 'garbage'] classified as:  1

4.4 準備數據:文檔詞袋模型

**詞集模型:**將每一個詞的出現與否做爲一個特徵。

**詞袋模型:**若是一個詞在文檔中出現不止一次,這可能意味着包含該詞是否出如今文檔中所不能表達的某種信息。 在詞袋中,每一個單詞能夠出現屢次,而在詞集中,每一個詞只能出現一次。

樸素貝葉斯詞袋模型

def bagOfWords2VecMN(vocabList, inputSet):
    returnVec = [0] * len(vocabList)
    for word in inputSet:
        if word in vocabList:
            returnVec[vocabList.index(word)] += 1  # 不僅是將對應的數值設爲1
    return returnVec

5、示例:使用樸素貝葉斯過濾垃圾郵件

示例:使用樸素貝葉斯對電子郵件進行分類

  1. 收集數據:提供文本文件。
  2. 準備數據:將文本文件解析成詞條向量。
  3. 分析數據:檢查詞條確保解析的正確性。
  4. 訓練算法:使用咱們以前創建的trainNB1()函數
  5. 測試算法:使用classifyNB(),而且構建一個新的測試函數來計算文檔集的錯誤率。
  6. 使用算法:構建一個完整的程序對一組文檔進行分類,將錯分的文檔輸出到屏幕上。

5.1 準備數據:切分文本

import re
mySent = 'This book is the best book on Python or M.L. I have ever laid eyes upon.'
regEx = re.compile(r'\W+')
# \W:匹配特殊字符,即非字母、非數字、非漢字、非_
# 表示匹配前面的規則至少 1 次,能夠屢次匹配
listOfTokens = regEx.split(mySent)
print(listOfTokens)
['This', 'book', 'is', 'the', 'best', 'book', 'on', 'Python', 'or', 'M', 'L', 'I', 'have', 'ever', 'laid', 'eyes', 'upon', '']
# 去掉空字符串。能夠計算每一個字符串的長度,只返回長度大於0的字符串
# 將字符串所有轉換成小寫
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']
emailText = open('email/ham/6.txt', "r", encoding='utf-8', errors='ignore').read()
listOfTokens = regEx.split(emailText)
# 6.txt文件很是長,這是某公司告知他們再也不進行某些支持的一封郵件。
# 因爲是URL:answer.py?hl=en&answer=174623的一部分,於是會出現en和py這樣的單詞。
# 當對URL進行切分時,會獲得不少的詞,於是在實現時會過濾掉長度小於3的字符串。

5.2 測試算法:使用樸素貝葉斯進行交叉驗證

文件解析及完整的垃圾郵件測試函數

def textParse(bigString):
    import re
    listOfTokens = re.split(r'\W+', bigString)
    return [tok.lower() for tok in listOfTokens if len(tok) > 2]


# 對貝葉斯垃圾郵件分類器進行自動化處理
def spamTest():
    docList = []; classList = []; fullText = []
    for i in range(1,26):
        # 導入並解析文本文件
        # 導入文件夾spam與ham下的文本文件,並將它們解析爲詞列表。
        wordList = textParse(open('email/spam/%d.txt' % i, "r", encoding='utf-8', errors='ignore').read())
        docList.append(wordList)
        fullText.extend(wordList)
        # append()向列表中添加一個對象object,總體打包追加
        # extend() 函數用於在列表末尾一次性追加另外一個序列中的多個值(用新列表擴展原來的列表)。
        classList.append(1)
        wordList = textParse(open('email/ham/%d.txt' % i, "r", encoding='utf-8', errors='ignore').read())
        docList.append(wordList)
        fullText.extend(wordList)
        classList.append(0)
    vocabList = createVocabList(docList)  # 詞列表
    # 本例中共有50封電子郵件,其中10封電子郵件被隨機選擇爲測試集
    # 分類器所須要的機率計算只利用訓練集中的文檔來完成。
    trainingSet = list(range(50)); testSet = []
    # 隨機構建訓練集
    for i in range(10):
        # 隨機選擇其中10個文件做爲測試集,同時也將其從訓練集中剔除。
        # 這種隨機選擇數據的一部分做爲訓練集,而剩餘部分做爲測試集的過程稱爲 留存交叉驗證。
        randIndex = int(random.uniform(0, len(trainingSet)))
        testSet.append(trainingSet[randIndex])
        del(trainingSet[randIndex])
    trainMat = []; trainClasses = []
    # 對測試集分類
    for docIndex in trainingSet:  # 訓練
        trainMat.append(setOfWords2Vec(vocabList, docList[docIndex]))  # 詞向量
        trainClasses.append(classList[docIndex])  # 標籤
    p0V, p1V, pSpam = trainNB1(array(trainMat), array(trainClasses))
    errorCount = 0
    for docIndex in testSet:  # 測試
        wordVector = setOfWords2Vec(vocabList, docList[docIndex])
        if classifyNB(array(wordVector), p0V, p1V, pSpam) != classList[docIndex]:
            errorCount += 1
            print('classificagion error ', docList[docIndex])
    print('the error rate is: ', float(errorCount)/len(testSet))
spamTest()
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']
the error rate is:  0.1

6、示例:使用樸素貝葉斯分類器從我的廣告中獲取區域傾向

示例:使用樸素貝葉斯來發現地域相關的用詞

  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

import feedparser
ny = feedparser.parse('http://www.nasa.gov/rss/dyn/image_of_the_day.rss')
print(ny['entries'])
print(len(ny['entries']))
[{'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'}}]
60

RSS源分類器及高頻詞去除函數

def calcMostFreq(vocabList, fullText):
    # 計算出現頻率
    import operator
    freqDict = {}
    for token in vocabList:
        freqDict[token] = fullText.count(token)
    sortedFreq = sorted(freqDict.items(), key=operator.itemgetter(1), reverse=True)
    return sortedFreq[:10]


def stopWords():
    import re
    wordList =  open('stopwords.txt').read() 
    listOfTokens = re.split(r'\W+', wordList)
    listOfTokens = [tok.lower() for tok in listOfTokens] 
    return listOfTokens


def localWords(feed1, feed0):
    import feedparser
    docList = []; classList = []; fullText = []
    minLen = min(len(feed1['entries']), len(feed0['entries']))
    for i in range(minLen):
        # 每次訪問一條RSS源
        wordList = textParse(feed1['entries'][i]['summary'])
        docList.append(wordList)
        fullText.extend(wordList)
        classList.append(1)
        wordList = textParse(feed0['entries'][i]['summary'])
        docList.append(wordList)
        fullText.extend(wordList)
        classList.append(0)
    vocabList = createVocabList(docList)
    # 去掉出現次數最高的那些詞
    top10Words = calcMostFreq(vocabList, fullText)
    for pairW in top10Words:
        if pairW[0] in vocabList: 
            vocabList.remove(pairW[0])
    # 移除停用詞
    stopWordList = stopWords()
    for stopWord in stopWordList:
        if stopWord in vocabList:
            vocabList.remove(stopWord)
    trainingSet = list(range(2*minLen)); testSet = []
    for i in range(10):
        randIndex = int(random.uniform(0, len(trainingSet)))
        testSet.append(trainingSet[randIndex])
        del(trainingSet[randIndex])
    trainMat = []; trainClasses = []
    for docIndex in trainingSet:
        trainMat.append(bagOfWords2VecMN(vocabList, docList[docIndex]))
        trainClasses.append(classList[docIndex])
    p0V, p1V, pSpam = trainNB1(array(trainMat), array(trainClasses))
    errorCount = 0
    for docIndex in testSet:
        wordVector = bagOfWords2VecMN(vocabList, docList[docIndex])
        if classifyNB(array(wordVector), p0V, p1V, pSpam) != classList[docIndex]:
            errorCount += 1
    print('the error rate is: ', float(errorCount)/len(testSet))
    return vocabList, p1V, p0V
ny=feedparser.parse('https://newyork.craigslist.org/search/res?format=rss')
sf=feedparser.parse('https://sfbay.craigslist.org/search/apa?format=rss')
print(len(ny['entries']))
print(len(sf['entries']))
vocabList, pNY, pSF = localWords(ny, sf)
25
25
the error rate is:  0.1

移除高頻詞,是由於語言中大部分都是冗餘和結構輔助性內容。

另外一個經常使用的方法是不只移除高頻詞,同時從某個預約詞表中移除結構上的輔助詞。該詞表稱爲停用詞表https://www.ranks.nl/stopwords

6.2 分析數據:顯示地域相關的用詞

最具表徵性的詞彙顯示函數

def getTopWords(ny, sf):
    import operator
    vocabList, p0V, p1V = localWords(ny, sf)
    topNY = []; topSF = []
    for i in range(len(p0V)):
        if p0V[i] > -6.0:
            topSF.append((vocabList[i], p0V[i]))
        if p1V[i] > -6.0:
            topNY.append((vocabList[i], p1V[i]))
    sortedSF = sorted(topSF, key=lambda pair: pair[1], reverse=True)
    print("SF**SF**SF**SF**SF**SF**SF**SF**SF**")
    for item in sortedSF:
        print(item[0])
    sortedNY = sorted(topNY, key=lambda pair: pair[1], reverse=True)
    print("NY**NY**NY**NY**NY**NY**NY**NY**NY**")
    for item in sortedNY:
        print(item[0])
getTopWords(ny, sf)
the error rate is:  0.3
SF**SF**SF**SF**SF**SF**SF**SF**SF**
experience
amp
job
services
looking
marketing
provide
experienced
time
please
money
online
specialty
com
virtual
reseller
support
work
lot
postings
delivery
personal
interested
budgets
female
just
wolf
position
starting
shopper
well
help
copy
picks
packages
one
enable
need
tasty
spending
clients
photos
leads
assistance
part
descriptions
research
without
willing
item
big
hour
errands
ride
top
people
businesses
expertise
products
years
get
contact
email
monthly
anais
clean
skills
pricing
https
sounds
tests
true
good
superv
outpatient
service
white
cacaoethescribendi
prescription
content
home
hope
pdf
jobs
summer
reclaim
paralegal
sell
run
calendar
lawyer
startups
proud
choir
information
technician
year
electronics
straightforward
film
independently
building
director
text
experiences
w0rd
last
licensing
pos
rate
wordpress
upside
expand
punctual
degree
black
cashiers
location
woman
island
yes
communications
dishwasher
world
social
f0rmat
relisting
clothing
regarding
business
courier
professionally
take
person
http
scimcoating
journalist
quickly
isnt
free
wanted
billy
vocalist
short
cardiovascular
producer
taper
legal
predetermined
century
school
walker
startup
commercial
new
assistant
cashier
offering
shopping
articles
via
hello
layersofv
affordable
2018
pharmacy
hey
open
option
versatile
offer
listing
23yrs
york
fast
even
corporate
446k
department
sonyc
excellent
will
plenty
clinic
studies
hear
thanks
practice
around
level
soon
typing
rican
within
etc
stories
effective
based
satisfy
resume
pay
data
messenger
realize
samples
happy
old
arawumi
proofreading
present
media
marketer
nonprofits
coveted
copywriting
program
lost
bronx
patient
name
pile
typical
limited
client
provided
select
painter
note
collection
assist
soundcloud
partners
motivated
cpa
full
care
reduced
link
hardworking
minute
162k
potential
rent
according
budget
thank
associate
list
tech
freelance
updating
therefore
affordably
really
collaborations
gift
responsible
collaboration
handova
pleas
derek
brooklyn
extra
hospital
house
request
edge
puerto
odd
interpersonal
video
budgeting
wants
secured
retail
writing
boss
upon
queens
music
clerk
per
essays
tobi
235q
make
canadian
21st
writer
february
fandalism
base
seeking
price
death
fertility
qualit
history
huge
runs
multiple
cleaning
course
long
concept
NY**NY**NY**NY**NY**NY**NY**NY**NY**
close
great
location
bathroom
bath
hardwood
unit
kitchen
shopping
coming
space
soon
house
entrances
apartments
home
room
2019
laundry
floor
located
tops
remodeled
living
valley
beautiful
one
rent
near
floors
freeway
quiet
centers
amp
rooms
1200
colony
silicon
inside
laminate
hello
duplex
parking
sunnyvale
approx
storage
glen
30th
heart
berdroom
conveniently
restaurants
separate
tech
firms
countless
cupertino
includes
april
private
perfect
major
manor
campus
updated
enough
three
newpark
patio
spacious
complex
2017
block
heating
country
nice
granite
site
easy
pay
counter
grand
show
eyrie
currently
appointment
security
drive
measured
water
garbage
900
500
throughout
downstairs
luxury
vineyard
two
top
pics
high
beautifully
dryer
central
covered
washer
jun1
north
neighborhood
gorgeous
upgraded
recycling
supermarkets
san
freshly
painted
flooring
lake
inc
victorian
molding
market
noise
wine
district
bri
immed
theater
please
newly
attractive
millbrae
find
acalanes
oven
bed
napa
end
area
deck
lots
deserve
building
jacuzzi
included
setting
unfurnished
irma
tile
150
restaur
small
enjoy
dishwasher
francisco
ceilings
professionally
refrigerators
murchison
customized
bart
short
hard
best
come
commute
school
enclosed
sides
south
ground
built
new
far
schedule
back
offering
see
law
open
sunlight
tranquil
farmers
special
broadway
deposit
towers
lion
10am
crown
roommates
photo
shared
antique
bustling
94611
quartz
welcome
executive
4pm
leads
street
management
glass
plaza
tub
owned
hea
1109
halfway
perfectly
roger
door
coffee
xpiedmont
495rent
garden
feel
link
viewing
nearly
features
gibson
jose
closet
center
super
furniture
02071565
walk
managed
94030
showings
sunroom
court
sinks
minutes
additional
people
windows
fou
request
shops
newer
portfolio
walnut
ceiling
condominiums
oakland
101
dining
foyer
mall
103
dre
cameras
food
entertaining
beam
bio
individually
make
access
chef
email
sliding
apartment
ave
creek
call
facing
clean
huge
sitting
charming
village
modern
相關文章
相關標籤/搜索