【发布时间】:2013-07-04 00:51:12
【问题描述】:
我有一个实现 BeautifulSoup 的 Python 脚本,它解析同一目录中的 XML 文件。我想用完全相同的 XML 格式解析网站上的很多页面。我想为脚本提供一个 url,它可以在该 URL 处获取页面的 XML 并对其进行解析,而不是下载每个 XML 并更改原始代码中的xml_file。这是我的代码所需要的。我正在尝试用获取页面 xml 的脚本替换 xml_file="somefileID.xml"。
#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."
感谢您的任何想法!
【问题讨论】:
-
您是否从一个引用了其他文档的 XML 文档开始,并且想要解析第一个文档,并获取并解析所有链接的文档?如果是这样,这与 HTML 抓取基本相同,因此您可能需要查看抓取库。但是对于足够简单的情况,自己写很容易。
-
否,XML 文档没有引用。这是我的上下文:我提供了一个带有页面 ID(例如:EP0972029、EP0972114、EP0974655 等)的 Excel 表,它们对应于页面 url(site.com/EP0972029... 等等)。我需要查看页面的 XML,而不是 下载 那些 XML,然后以这种方式将信息带入脚本中。我不想下载数千页,而是让脚本查看页面的 XML 并解析它们。到目前为止,这些页面都是 HTML 格式的,并且只给了我下载 XML 的选项。一定有办法让我看到它
-
“视图”是什么意思?你的意思是你只想把它们下载到内存或临时文件中,处理它们,然后把它们扔掉,所以你一次只有一个,而不是数千个?如果是这样,那很容易——事实上,这只是 ToxicTeacakes 的单线。
xml_file不是磁盘上的实际文件,它完全在内存中,但您仍然可以从中获取read(),就像它是一个文件一样。 -
所以如果我有 XML 下载的 URL,我可以这样做:
xml_file= urllib.urlopen("http://site.com/xml-download")? -
换句话说,该下载是否以文本形式存在于该站点的任何位置?即使它有下载? :)
标签: python xml beautifulsoup