之前逛論壇,突然看到一個很有意思的爬蟲,就是利用Pandas裡的read_html爬取網頁中table。
首先,我們介紹一下這個網頁http://www.weather.com.cn/textFC/hb.shtml
我們看到這個網址有很多地區的天氣,看起來很像是表格形式,那我們就進一步去驗證是否是表格。如下圖,我們先打開檢查(F12),點選1,然後點選2的地方,找到表格所在,但現在依然是div,不是table,再繼續點選展開div,最後找到了table,說明這個是table,那我們就可以爬取表格了。
現在開始進行爬蟲
import pandas as pd #導入相關庫
# 找到自己想要的網頁表格網址
url='http://www.weather.com.cn/textFC/hb.shtml'
df = pd.read_html(url)[0]
# 若是隻儲存這一個 df.to_csv('路徑')
Out[3]:
0 1 2 ... 6 7 8
0 省/直轄市 城市 周三(5月13日)白天 ... 周三(5月13日)夜間 周三(5月13日)夜間 NaN
1 省/直轄市 城市 天氣現象 ... 風向風力 最低氣溫 NaN
2 北京 北京 晴 ... 南風 <3級 18 詳情
3 北京 海澱 晴 ... 南風 3-4級 18 詳情
4 北京 朝陽 晴 ... 南風 3-4級 19 詳情
5 北京 順義 晴 ... 南風 <3級 20 詳情
6 北京 懷柔 晴 ... 南風 <3級 17 詳情
7 北京 通州 晴 ... 南風 3-4級 16 詳情
8 北京 昌平 晴 ... 東南風 <3級 19 詳情
9 北京 延慶 晴 ... 東風 <3級 16 詳情
10 北京 豐台 晴 ... 西南風 3-4級 18 詳情
11 北京 石景山 晴 ... 南風 <3級 18 詳情
12 北京 大興 晴 ... 南風 3-4級 17 詳情
13 北京 房山 晴 ... 南風 <3級 17 詳情
14 北京 密雲 晴 ... 南風 <3級 18 詳情
15 北京 門頭溝 晴 ... 西南風 <3級 18 詳情
16 北京 平谷 晴 ... 東南風 <3級 17 詳情
17 北京 東城 晴 ... 南風 3-4級 19 詳情
18 北京 西城 晴 ... 南風 3-4級 18 詳情
[19 rows x 9 columns]
可以看出隻爬取了北京是19個城市5月13日的天氣資料,如果我們想要頁面所有的的表格,我們可以将df = pd.read_html(url)[0]改為df = pd.read_html(url),因為列印處理太大了,我們可以将其儲存到excel中:
df = pd.read_html(url)
for i in df:
i.to_csv('C:/Users/Administrator/Desktop/python/項目/pandas爬取網頁表格table/hb_weather.csv',
mode='a+', encoding='utf_8_sig', header=1,index=0)
最後,我們可以看一下表格内容。