我正在将Beautiful汤与python一起使用,以从网站中检索天气数据。
网站的外观如下:
<channel>
<title>2 Hour Forecast</title>
<source>Meteorological Services Singapore</source>
<description>2 Hour Forecast</description>
<item>
<title>Nowcast Table</title>
<category>Singapore Weather Conditions</category>
<forecastIssue date="18-07-2016" time="03:30 PM"/>
<validTime>3.30 pm to 5.30 pm</validTime>
<weatherForecast>
<area forecast="TL" lat="1.37500000" lon="103.83900000" name="Ang Mo Kio"/>
<area forecast="SH" lat="1.32100000" lon="103.92400000" name="Bedok"/>
<area forecast="TL" lat="1.35077200" lon="103.83900000" name="Bishan"/>
<area forecast="CL" lat="1.30400000" lon="103.70100000" name="Boon Lay"/>
<area forecast="CL" lat="1.35300000" lon="103.75400000" name="Bukit Batok"/>
<area forecast="CL" lat="1.27700000" lon="103.81900000" name="Bukit Merah"/>`
<channel>
我想找回下午3:30至5时30分这是间validTime
检查页面中的元素后,我发现该<span>
元素内的“ class = Text”位于3.30 pm到5.30 pm之间:
基于webiste,这是我的python代码:
import requests
from bs4 import BeautifulSoup
url = "http://www.nea.gov.sg/api/WebAPI/?dataset=2hr_nowcast&keyref=<keyrefnumber>"
r = requests.get(url)
soup = BeautifulSoup(r.content, "html.parser")
g_data = soup.find_all("span", {"class": "text"})
print g_data
# to print out the file in 3.30pm to 5:30pm to an XML file
outfile = open('C:\scripts\idk.xml','w')
当我在CMD中运行python代码时,我得到的只是[]
。
将在新加坡国家环境局网站的主要API页清楚地表明,你得到的回应是一个XML文档:
2小时即时广播
数据描述:接下来2小时的天气预报
最近一次API更新:2016年3月1日,
频率,每小时,
文件类型:XML
您正在查看Chrome中数据的HTML表示形式;Chrome浏览器对XML进行了改造,使其能够以某种方式呈现,但是您的Python代码仍在直接访问XML。该PDF文档和你自己的问题显示实际的XML内容,解析这些。
如果要对XML使用BeautifulSoup,请确保已安装lxml
项目并使用'xml'
解析器类型。然后只需访问validTime
元素的文本内容:
soup = BeautifulSoup(r.content, "xml")
valid_time = soup.find('validTime').string
演示:
>>> import requests
>>> from bs4 import BeautifulSoup
>>> r = requests.get('http://www.nea.gov.sg/api/WebAPI/?dataset=2hr_nowcast&keyref=<private_api_key>')
>>> soup = BeautifulSoup(r.content, "xml")
>>> soup.find('validTime').string
u'4.00 pm to 6.00 pm'
如果要写入XML文件,则必须确保该文件正在写入有效的XML。这超出BeautifulSoup的范围。
另外,默认情况下,请使用Python随附的ElementTree
API。它既可以解析XML,又可以生成新的XML。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句