2016-10-17 88 views
2

我與網絡使用BS4刮試圖從該行的XML標題和彩色標籤<graph gid="1" color="#000000" balloon_color="#000000" title="Approve">BS4得到XML標籤變量

的輸出結果將是一個字典的東西沿着{'title':'approve', 'color':'#000000'}

線玩弄

的頁面,XML是here

我已經寫了這個功能,這絕不是有效的,但希望我的數據框的標題是title的結果,而不是手動輸入值。所以不是GID1它會讀ApproveObama或任何標題的結果。

def rcp_poll_data(xml): 
    soup=bs(xml,"xml") 
    dates = soup.find('series') 
    datesval = dates.findChildren(string=True) 
    del datesval[-7:] 
    obama = soup.find('graph', { "gid" : "1" }) 
    obamaval = obama.findChildren(string=True) 
    romney = soup.find('graph', { "gid" : "2" }) 
    romneyval = romney.findChildren(string=True) 
    result = pd.DataFrame({'date':pd.to_datetime(datesval), 'GID1':obamaval, 'GID2':romneyval}) 
    return result 

我正在使用bs4並努力尋找合適的術語讓我在那裏。這些標籤是我想要隔離,還是元素或屬性?

這不是一個專業的東西,我只是爲了好玩而忙碌。所以任何幫助讓我稍微靠近一點都會很棒。 (我使用python 3)

回答

2

你只需要拉屬性一旦你找到了圖節點

import requests 
from bs4 import BeautifulSoup 

soup = BeautifulSoup(requests.get("http://charts.realclearpolitics.com/charts/1044.xml").content,"xml") 
g = soup.find("graph", gid="1") 
data = {"title":g["title"], "color": g["color"]} 

,這將給你:

{'color': '#000000', 'title': 'Approve'} 
+0

媽的,我知道這很簡單。感謝您的幫助@Padraic – hselbie

+0

不用擔心,對羅姆尼來說,我們只是清洗和重複。 –