Excel爬取数据方式(两种)
一、Excel爬取数据的方式
1、简介
(1)背景:当有些网站出现表格型数据,如本文提供的(天气网站:历史天气查询|天气记录|天气预报|气温查询|过去天气_天气后报 NBA球队数据网站:http://www.stat-nba.com/),可直接用Excel爬取数据,本文将解释两种数据爬取的方式及可能出现的问题解决
(2)相关知识
A.F12进入开发者模式找到网页数据对应的URL(网络>标头可查看改网页的URL)
B.查看该网页的编码形式,并转换成excel能理解的编码形式
以上方例子,进入开发者模式后在<元素><head>可查看,该网页编码为UTF-8,则对应excel的编码为65001,常见的编码对应形式如下:
Utf8 = 65001;
Utf16 = 1200;
Ascii = 20127;
Unicode = 1200;
BigEndianUnicode = 1201;
Windows = 1252
2、Web.Page函数爬取数据
Web.Page(Text.FromBinary(Web.Contents([URL]),65001)){0}[Data]
Web.Page | 以网页的方式加载数据 |
Web.Contents | 将网页以二进制文件的格式下载 |
Text.FromBinary | 将二进制文件转化为文本 |
65001 | Text.FromBinary中UTF8编码参数 |
实验网址:ttp://www.stat-nba.com/
步骤如下:
第一步:录入数据
老鹰队:http://www.stat-nba.com/team/ATL.html公牛队:http://www.stat-nba.com/team/CHI.html公牛2018:http://www.stat-nba.com/team/stat_box_team.php?team=CHI&season=2018&col=pts&order=1&isseason=1公牛2019:http://www.stat-nba.com/team/stat_box_team.php?team=CHI&season=2019&col=pts&order=1&isseason=1篮网:布鲁克林篮网队|数据nba|stat-nba|历史数据|技术统计|最全最专业中文nba数据库
总结发现:球队和赛季不同的URL有两处不同:一是team缩写不一样;二是season不一样,于是我们提前将缩写和年份录入excel表格
第二步:进入pq(power query)界面
步骤:选中表格>数据>从表格。
注意事项:要将年份数据形式转换成文本形式
第三步:定义每一条待爬取信息的url
步骤:添加列>自定义列>修改新列名
第四步:定义函数:Web.Page(Text.FromBinary(Web.Contents([URL]),65001)){0}[Data]
第五步:数据筛选
这里不要勾选使用原始列名作为前缀。
3、从新建查询的Web中获取
第一步:打开excel:数据>数据查询>从其他源>从web(W)
第二步:导航器中选择Table0,点击<加载>导出到excel,得到如下结果:
总结:这个方法有个缺点不能爬取很多个城市,我们需要分析不同城市的URL,看是否能用:Web.Page爬取多个城市的数据,这里随机选择三个城市观察URL仅城市不同,于是试一下大量爬取:
北京:http://www.tianqihoubao.com/weather/top/beijing.html
重庆北碚:北碚历史天气查询_北碚过去一个月天气预报_天气后报
四川成都:成都历史天气查询_成都过去一个月天气预报_天气后报
步骤:数据>从表格>添加列(url)(步骤如上方NBA数据爬取所示)
这里要注意不需要将二进制文件转化为文本
得到结果: