2013-07-04 34 views
0

我有一個Python腳本實現BeautifulSoup解析同一目錄中的XML文件。我想用完全相同的XML格式解析網站上的很多頁面。我想爲腳本提供一個可以獲取頁面XML並解析它的URL,而不是下載每個XML並在原始代碼中更改xml_file。這是我的代碼所需要的。我正嘗試用取得頁面xml的腳本替換xml_file="somefileID.xml"檢索頁面的XML解析Python

#The program just goes through and pulls info from different tags. 

from bs4 import BeautifulSoup 
xml_file="somefileID.xml" #get this ID from the page using a script somehow?? 
#Then somehow put that id you got into "http://someurl.com/"+xml_file 
xml_string = open(xml_file).read() #go on to read your new xml file 

#Status 
soup = BeautifulSoup(xml_string) 
status = soup.find('some-tag')['some-attribute'] 
print "\nSome Prompt: "+attribute+"\n" 
print "Most Recent Event Information: \n" 

#Most Recent Event Date 
event_date = lambda x: x.name == "date" 

events = soup.findAll(event_date) 
if(events): 
    # The last event-data 
    print "Date: "+events[-2].text 

print "Analysis Complete." 

感謝您的任何想法!

+0

您是從一個XML文檔開始,該文檔引用了其他文檔,並且您想要解析第一個文檔,並獲取並解析所有鏈接的文檔?如果是這樣,這基本上與HTML抓取相同,所以你可能想看看一個抓圖庫。但是對於簡單的情況,自己編寫它很容易。 – abarnert

+0

否XML文檔沒有引用。這裏是我的上下文:我提供了一個帶有頁面ID(例如:EP0972029,EP0972114,EP0974655等)的Excel頁面,它們對應於頁面URL(http://site.com/EP0972029 ...等等)。我需要,而不是*下載*這些XML,查看頁面的XML,並將這些信息帶入腳本。我不想下載數以千計的頁面,而是讓腳本查看頁面的XML並解析它們。截至目前的頁面都是HTML格式的,只給我下載XML的選項。有一些我可以看到它 – sdweldon

+0

你是什麼意思的「觀點」?你的意思是你只是想把它們下載到內存或臨時文件中,處理它們,然後扔掉它們,所以你只能坐在一起而不是成千上萬個。如果是這樣,這很容易 - 事實上,這只是ToxicTeacakes的單線。 'xml_file'不是磁盤上的實際文件,它完全在內存中,但仍然可以從它讀取(),就像它創建一個文件一樣。 – abarnert

回答

1

編輯:與任何互聯網頁面一樣,您不能僅僅「查看」xml文件。當你加載一個頁面,你下載它。

import urllib 
xml_file= urllib.urlopen("somefileID.xml") 

會這樣做。

編輯2: 您正確地說,xml_file= urllib.urlopen("http://site.com/xml-download")將檢索xml。該網址是存儲在網站上的文本的鏈接。但是,要訪問該文本,您必須首先下載它。

+0

這似乎更像是一個評論而不是答案。 – abarnert

+0

我同意。不幸的是,我缺乏足夠的聲譽評論一個問題,但仍然想貢獻。將根據提問者的回覆刪除。 – ToxicTeacakes

+0

工作就像一個魅力感謝男人! – sdweldon