我希望从每个天气预报办公室获取每天最高的阵风价值。我没有找到任何表格数据,所以我认为我需要创建一个可以从网页中提取的脚本。
大约一半的时候,我只想捕捉10月30日在这个车站将达到23英里/小时的“最高阵风速度”。
用Python说这样做是否可行?我需要每天运行脚本来捕获前一天所有气象站的最高阵风。
我想知道我是否可以填充一个表格,其中包含指向每个电台的链接并从那里开始。谢谢。
被修改
我将这段似乎合用的代码拼凑在一起。然而,我在txt文件中发现这些数据更容易处理。谢谢。
import urllib2, csv
url="http://forecast.weather.gov/product.php?
site=JAN&issuedby=ORD&product=CLI&format=CI&version=5&glossary=0"
downloaded_data = urllib2.urlopen(url)
#csv_data = csv.reader(downloaded_data)
row2 = ''
for row in downloaded_data:
row2 = row2 + row
start = row2.find('HIGHEST GUST SPEED ') + 21
end = row2.find('HIGHEST GUST DIRECTION', start)
print int(row2[start:end])
答案 0 :(得分:2)
听起来你想要抓一个网站。在这种情况下,我会使用python的urllib和漂亮的汤lib。
编辑:
我只是查看你的链接,我不认为在这种情况下美丽的汤真的很重要。我仍然会使用urllib,但是一旦你得到那个对象,你就必须解析那些数据,寻找你需要的东西。这有点hacky,但应该工作。我必须回过头来看看情况如何发生。
但是,您可以使用漂亮的汤来提取纯文本,使您的纯文本解析更容易一些吗?无论如何,只是一个想法!
获得该数据后,您可以创建要检查的前一个值是否大于上一次传递的逻辑。一旦你找出那部分,走出去获取数据。只需创建一个init.d脚本并忘记它。
# example urllib
def requesturl(self, url):
f = urllib.urlopen(url)
html = f.read()
return html
# beautiful soup
def beautifyhtml(self, html):
currentprice_id = 'yfs_l84_' + self.s.lower()
current_change_id = 'yfs_c63_' + self.s.lower()
current_percent_change_id = 'yfs_p43_' + self.s.lower()
find = []
find.append(currentprice_id)
find.append(current_change_id)
find.append(current_percent_change_id)
soup = BeautifulSoup(html)
# title of the sites - has stock quote
#title = soup.title.string
#print(title)
# p is where the guts of the information I would want to get
#soup.find_all('p')
color = soup.find_all('span', id=current_change_id)[0].img['alt']
# drilled down version to get current price:
found = []
for item in find:
found.append(soup.find_all('span', id=item)[0].string)
found.insert(0, self.s.upper())
found.append(color)
return found