2011-09-15 35 views
0

我使用蟒蛇beautifulsoup获取XML,而不是HTML页它在

import urllib2 
from BeautifulSoup import BeautifulStoneSoup 
xml = urllib2.urlopen('http://weatherlink.com/xml.php?user=blah&pass=blah') 
soup = BeautifulStoneSoup(xml) 
print soup.prettify() 

但只是抓住HTML。如果我卷曲它,我得到这样的:

... 
<title>blah</title> 
<link>http://www.blah.com</link> 
</image> 
<suggested_pickup>15 minutes after the hour</suggested_pickup> 
<dewpoint_c>16.7</dewpoint_c> 
<dewpoint_f>62</dewpoint_f> 
<heat_index_f>77</heat_index_f> 
... 

我能做些什么,使:

some_data {} 
some_data [ 'dewpoint_c' ] = 16.7 
some_data [ 'heat_index' ] = 77 

其中some_data将不得不从它应该得到的XML值。我也尝试过minidom和ElementTree,但遇到同样的问题首先获取xml

+0

复制它但只是抓住HTML“,它出现它的返回XML,你只需要解析成一个字典。我需要看到更多的反应,才能知道如何轻松解析它。 – MattoTodd

+0

它抓取的.html只是一个基本的html页面,它不会显示浏览到浏览器页面时显示的xml。如果它接受一个cookie,我可以通过curl来获取xml在同一个URL上,然后将它输出到somefile.xml中,然后使用soup.find来获取它,但我相信还有更好的方法。 – unclecameron

回答

0

您是否尝试过使用头文件并请求XML?

headers = { 
    "Accept":"application/xml;q=0.9," 
} 
xml = urllib2.urlopen('http://weatherlink.com/xml.php?user=blah&pass=blah', headers=headers) 

在Chrome进行登录和使用开发工具,尤其是网络浏览器,看看有什么发生在你的浏览器,然后尝试通过urllib2的