Excel抓取网站数据 账号:自动化大数据采集的利器
优采云 发布时间: 2023-03-21 09:28如果你是一位网站管理员或者市场营销人员,你一定会遇到需要从网站中抓取大量数据的需求。而手动复制粘贴这些数据显然是非常繁琐且费时的,因此使用Excel来自动化抓取数据就是一个非常好的选择。本文将从以下10个方面详细介绍如何使用Excel来抓取网站数据。
第一部分:安装Power Query插件
第二部分:导入网页数据
第三部分:删除无用列和行
第四部分:格式化表格
第五部分:提取HTML标签
第六部分:提取JSON数据
第七部分:设置参数查询
第八部分:合并表格
第九部分:批量导入URL列表
第十部分:自动刷新数据
安装Power Query插件
Power Query是一个强大的Excel插件,它可以轻松地抓取和转换各种格式的数据。首先需要下载并安装Power Query插件。插件下载地址为 https://www.ucaiyun.com/power-query-download.html 。安装完成后,在Excel菜单栏中可以看到“Power Query”选项卡。
导入网页数据
在Excel中打开一个新工作表,点击“Power Query”选项卡中的“从其他来源”按钮,选择“从Web”选项。在弹出的对话框中输入要抓取的网页地址,并点击“确定”按钮。
删除无用列和行
在导入网页数据后,可能会发现表格中有很多无用列和行。可以通过右键点击表格标题栏,选择“删除列”或“删除行”的方式来删除这些无用数据。
格式化表格
在删除无用列和行之后,可能还需要对表格进行格式化处理。可以通过右键点击标题栏并选择“更改类型”或“更改格式”的方式来实现。
提取HTML标签
如果要提取网页中某些特定标签的内容,可以使用Power Query中提供的“提取”功能。例如,在从百度地图上搜索出所有KFC门店信息时,可以使用以下公式来提取门店名称:
= Table.AddColumn(#"Expandedresult","门店名称", each Text.RemoveHtmlTags([#"门店地址"]))
提取JSON数据
如果要从Web API接口获取JSON格式的数据,并将其转换为Excel表格,则可以使用Power Query中提供的“从JSON获取值”功能。例如,在获取某个城市天气预报时,可以使用以下公式来提取天气情况:
= Table.SelectColumns(Table.ExpandRecordColumn(Json.Document(Web.Contents("http://api.weather.com.cn/data/sk/101010100.html")),"weatherinfo"),{"weather"})
设置参数查询
如果要通过参数查询来获得某些特定条件下的结果,则可以使用Power Query中提供的参数查询功能。例如,在获取某个城市不同日期天气预报时,可以使用以下公式来设置参数查询:
=(city as text, date as text)=> let url ="http://api.weather.com.cn/data/cityinfo/"& city &".html", json = Json.Document(Web.Contents(url)), code = json[#"weatherinfo"][#"cityid"], url2 ="http://api.weather.com.cn/data/sk/"& code &".html", json2 = Json.Document(Web.Contents(url2)), temp = json2[#"weatherinfo"][#"temp"], url3 ="http://api.weather.com.cn/data/cityinfo/"& code &".html", json3 = Json.Document(Web.Contents(url3)), cityname = json3[#"weatherinfo"][#"city"], url4 ="http://api.k780.com:88/?app=weather.future&weaid="& code &"&a*敏*感*词*ey=xxxxx&sign=xxxxx&format=json&date="& date, json4 = Json.Document(Web.Contents(url4)) in json4[#"result"]
合并表格
如果需要将多个表格合并成一个大表格,则可以使用Power Query中提供的合并功能。例如,在将KFC门店信息和营业时间合并时,可以使用以下公式来实现:
= Table.Join(#"Expandedresult",{"门店编号"},#"Expandedtime",{"门店编号"}, JoinKind.LeftOuter)
批量导入URL列表
如果要批量导入多个URL列表,并将每个URL对应的结果合并成一个大表格,则可以使用Power Query中提供的循环导入功能。例如,在批量导入多个城市天气预报时,可以使用以下公式来实现:
let Source = Excel.CurrentWorkbook(){[Name="url"]}[Content],#"Changed Type"= Table.TransformColumnTypes(Source,{{"url", type text}}),#"Added Custom"= Table.AddColumn(#"Changed Type","Custom", each Json.Document(Web.Contents())),#"Removed Other Columns"= Table.SelectColumns(#"Added Custom",{"Custom"}),#"Expanded Custom"= Table.ExpandRecordColumn(#"Removed Other Columns","Custom",{"result"},{"result"}),#"Expanded result"= Table.ExpandListColumn(#"Expanded Custom","result"),#"Changed Type1"= Table.TransformColumnTypes(#"Expanded result",{{"result", type table}}),#"Removed Other Columns1"= Table.SelectColumns(#"Changed Type1",{"result"}),#"Expanded result1"= Table.ExpandTableColumn(#"Removed Other Columns1","result",{"days"},{"days"}),#"Removed Other Columns2"= Table.SelectColumns(#"Expanded result1",{"days"}),#"Expanded days"= Table.ExpandListColumn(#"Removed Other Columns2","days"),#"Expanded days1"= Table.ExpandRecordColumn(#"Expanded days","days",{"week","temperature","weather","wind"},{"week","temperature","weather","wind"}) in #"Expanded days1"
自动刷新数据
最后,在完成了所有配置之后,我们需要设置自动刷新功能以确保我们所得到的数据始终是最新的。可以通过点击右键并选择“属性”,然后在“查询属性”窗口中设置自动刷新间隔时间。
总结:
本文详细介绍了如何使用Excel抓取网站数据,并对其中涉及到的10个方面进行了逐一讲解。希望这篇文章能够帮助到那些需要从Web上获取大量数据的读者们,并为他们节省不少时间和精力。同时也推荐一下优采云(www.ucaiyun.com),它是一款非常好用且功能强大的云端爬虫工具,能够满足各种不同场景下对于海量数据[url=https://www.ucaiyun.com/]采集、处理、存储等需求,并且支持SEO优化哦!