提问人:Vishaal Sudarsan 提问时间:11/14/2017 更新时间:11/14/2017 访问量:221
从以下网站解析表
Parsing a Table from the following website
问:
我想收集 2016 年印度特定城市每天的过去天气详细信息。以下网站包含此数据:
"https://www.timeanddate.com/weather/india/kanpur/historic?month=1&year=2016"
此链接包含 2016 年 1 月的数据。那里有一张漂亮的桌子
我已经尝试得够多了,我可以提取另一张表,就是这张表。但我不想要这个。它不符合我的目的
我想要另一个大表,其中包含随时间给出的数据。“对于该月的每一天”,因为这样我就可以使用 URL 遍历所有月份。
问题是我不知道html和与之相关的东西。所以我不能自己刮东西。
答:
1赞
Vineet Chaurasiya
11/14/2017
#1
如果您提供一些您尝试过的代码,那就更好了。无论如何,此代码适用于 1 月 1 日的表。您也可以编写循环来提取其他日期的数据。
from urllib.request import urlopen
from bs4 import BeautifulSoup
url = "https://www.timeanddate.com/weather/india/kanpur/historic?
month=1&year=2016"
page = urlopen(url)
soup = BeautifulSoup(page, 'lxml')
Data = []
table = soup.find('table', attrs={'id':'wt-his'})
for tr in table.find('tbody').find_all('tr'):
dict = {}
dict['time'] = tr.find('th').text.strip()
all_td = tr.find_all('td')
dict['temp'] = all_td[1].text
dict['weather'] = all_td[2].text
dict['wind'] = all_td[3].text
arrow = all_td[4].text
if arrow == '↑':
dict['wind_dir'] = 'South to North'
else:
dict['wind_dir'] = 'North to South'
dict['humidity'] = all_td[5].text
dict['barometer'] = all_td[6].text
dict['visibility'] = all_td[7].text
Data.append(dict)
注意:为wind_dir逻辑添加其他情况
评论