【问题标题】:Retrieve a page's XML for Python parsing检索页面的 XML 以进行 Python 解析
【发布时间】: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


【解决方案1】:

编辑: 与任何互联网页面一样,您不能仅仅“查看”一个 xml 文件。当你加载一个页面时,你下载它。

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

会这样做。

编辑 2: 您说xml_file= urllib.urlopen("http://site.com/xml-download") 将检索xml 是正确的。该 url 是存储在网站上的文本的链接。但是,要访问该文本,您必须先下载它。

【讨论】:

  • 这似乎更像是一个评论而不是一个答案。
  • 我同意。不幸的是,我缺乏足够的声誉来评论一个问题,但仍然想做出贡献。将在提问者回复后删除。
猜你喜欢
  • 1970-01-01
  • 2015-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多