从以下网站解析表

Parsing a Table from the following website

提问人:Vishaal Sudarsan 提问时间:11/14/2017 更新时间:11/14/2017 访问量:221

问:

我想收集 2016 年印度特定城市每天的过去天气详细信息。以下网站包含此数据:

"https://www.timeanddate.com/weather/india/kanpur/historic?month=1&year=2016"

此链接包含 2016 年 1 月的数据。那里有一张漂亮的桌子

我想提取此表

我已经尝试得够多了,我可以提取另一张表,就是这张表。但我不想要这个。它不符合我的目的

我想要另一个大表,其中包含随时间给出的数据。“对于该月的每一天”,因为这样我就可以使用 URL 遍历所有月份。

问题是我不知道html和与之相关的东西。所以我不能自己刮东西。

python-2.7 beautifulsoup 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逻辑添加其他情况