[21天小白学成大师]No.3 学会用EXCEL自带的3个函数抓取30万条网页数据

浏览: 1629

本系列文章作者是我二徒弟,一个80后,学历不高,同时运营着3家1688店铺。全套文章21篇,虽然标题是21天小白学成大师,但还真不是一天一更,平时比较忙,更新就要耐心等候了。

这篇文章共有119张配图,建议在wifi环境下阅读


光阴似箭,转眼又到了春暖花开的季节,本该春意盎然,鸟语花香,But,雪叛变了冬,春遇到了雪,是雪的不贞,还是冬的无能?

这个世界乱了……

只有自己强大了,别人才不敢背叛。

师父教了一个大招,附上一句教诲:自律而后自驱,自驱而后自信,自信方能沉稳,下面进入主题。先上一张效果图(这样30万+的数据只要分分钟就解决):

image.png

相信大家在做Excel数据表的时候,都碰到过这样的问题:每当数据源是来自网页的时候,我们经常需要重复性的复制粘贴至表格,才能进行后续的分析,不仅耽误时间而且容易出错。

在师傅的指导下,我在Excel道路上又跨出了一步,学会了利用Excel自带的Power Query以及简单的3个函数根据自身的需求得到了去哪儿网30多万条旅游数据。

好处还不仅仅于此,表格制作完成后可以随意修改出发地,单击刷新,表格将会自动抓取新的数十万条数据,完全自带共享功能,绝对称得上是装X利器。

以下是具体的步骤(友情提示,下面的操作步骤很详细,所以看起来有点繁琐,但只要你动手做,很简单):

打开去哪儿官网

image.png

→在键盘上按下F12键→手机端标识

image.png

→在键盘上按下F5键,刷新页面,看到手机端的页面→点击度假

image.png

→在右侧解析器中点击清除文件

image.png

→点击搜索框

image.png

→点击加载热门城市

image.png

→查看右侧解析器的Network

image.png

→选择JS文件

image.png

→找到arriveRecommend

image.png

→单击Preview

image.png

→展开data

image.png

→展开1

image.png

→展开subModules

image.png

→展开0

image.png

→展开items

image.png

随后重复展开→0→1→2→3→4→5,这样我们就找到了需要的所有分类,接下来我们返回去找到链接结合函数就能抓取所有我们能看到的分类。

image.png

→点击Headers

image.png

→选中的部分为URL编码,因此我们需要先解码,一探究竟。

image.png

→在百度搜索框键入“解码”→回车

image.png

→站长工具

image.png

→URL编码/解码

image.png

→将编码粘贴进去→UrlDecode

image.png

→解码之后我们发现编码就是出发地→新建一张Excel表格→键入出发地→键入温州→从表格

image.png

→将表包含标题勾上→确定

image.png

→添加列

image.png

→自定义列

image.png

→将之前含有编码的网页链接复制进来https://m.dujia.qunar.com/golfz/sight/arriveRecommend?dep=%E6%B8%A9%E5%B7%9E→将编码替换成函数Uri.EscapeDataString()

导盲犬:Uri.EscapeDataString()函数是转码用的,默认是ut8。

注:函数需区分大小写并且括号是在英文状态下键入的,插入函数的时候要在函数前面加上连接符号“&”。

→在括号中间选中

image.png

→双击出发地

image.png

→插入Web.Contents函数→插入Json.Document函数→确定

导盲犬:函数Web.Contents()是将从web URL下载的内容返回为二进制值,函数Json.Document()是返回一个JSON文件的内容,直接解析json的格式化数据。

注:插入的函数Web.Contents()需要在括号里面加“”号,表示引用文本。

image.png

→继续

image.png

→倒三角→公共→保存

image.png

→扩展(扩展的依据是之前我们在浏览器代码上找到的内容所处的位置)

image.png

→仅勾选data→确定

image.png

→扩展

image.png

→扩展

image.png

→仅勾选subModules→确定

image.png

→扩展

image.png

→扩展

image.png

→仅勾选items→确定

image.png

→扩展

image.png

→仅勾选query→确定

image.png

→倒三角

image.png

→将null前面的勾去掉→确定,这样我们就得到了所有从温州出发可以到达的目的地。

image.png

→接着我们返回浏览器单击清除

image.png

→三亚

image.png

→XHR

image.png

→listApi.json?modules=list

image.png

→Preview

image.png

→data

image.png

→list

image.png

→results

image.png

→3

image.png

→根据自己的需求找到数据,我找了productScore(评分),soldCount(销量),title(标题)totalPrice(价格)。

image.png

→这里我还多找了一个encodeId(编号),是为之后抓取评价用的。

image.png

→Headers

image.png

→将所有的编码复制

image.png

→粘贴至转码→UrlDecode解码

image.png

→解码后,就可以发现其中的变量只有出发地(温州)和目的地(三亚),接着我们回到查询编辑器

image.png

→添加自定义列

image.png

→将3段变量编码全部修改为Uri.EscapeDataString()函数,并且依次选中括号双击右侧的出发地,query,query,注意这里需要键入的连接符号。

→插入Web.Contents()函数,注意这里所有的文本需要键入的引号,文本与变量之间用“&”号连接。

image.png

→插入Json.Document()函数,由于函数太长截不下全图,我就粘贴在这里。“https://touch.dujia.qunar.com/listApi.json”是接口,“?”后面的是参数。

Json.Document(Web.Contents("https://touch.dujia.qunar.com/listApi.json?modules=list,bookingInfo&dep="&Uri.EscapeDataString([出发地])&"&query="&Uri.EscapeDataString([query])&"&mtype=all&mobFunction=%E8%87%AA%E7%94%B1%E8%A1%8C,%E5%87%BA%E5%8F%91%E5%9C%B0%E5%8F%82%E5%9B%A2,%E7%9B%AE%E7%9A%84%E5%9C%B0%E5%8F%82%E5%9B%A2,&it=dujia_hy_destination&bd_source=wdcx2&page=home&mobfuncname=%E8%87%AA%E7%94%B1%E8%A1%8C,%E5%87%BA%E5%8F%91%E5%9C%B0%E5%8F%82%E5%9B%A2,%E7%9B%AE%E7%9A%84%E5%9C%B0%E5%8F%82%E5%9B%A2&date=&configDepNew=&needNoResult=true&originalquery="&Uri.EscapeDataString([query])&"&limit=0,28&includeAD=true&qsact=search"))

→扩展

image.png

仅勾选data→确定

image.png

→仅勾选list→确定

image.png

→扩展

image.png

→仅选中results→确定

image.png

→扩展

image.png

→扩展

image.png

→将“选择所有列”前面的勾去掉

image.png

→勾选encodeId,productScore,soldCount,title,totalPrice这五个选项→确定

image.png

image.png

到这里,我们就只差一个评价没有抓取了,返回浏览器。

→点击任意一款有销量的旅游产品进入

image.png

→清除

image.png

→查看评价

image.png

→queryPComments

image.png

→data

image.png

→mainCommentList

image.png

→评价在content下。

image.png

→Headers

image.png

→找到链接,发现其中就只有ID是变量,接着我们返回查询编辑器

image.png

添加自定义列


→将链接复制进去,因为没有编码所以就不要转码函数,只需将原先的数字去掉,双击键入encodeld,注意需要添加连接符号。

image.png

→插入Web.Contents()函数,注意添加的引号。

image.png

→插入Json.Document()函数→确定。注:这里把Size后面的数字改为50,是每次加载50条评价的意思。

image.png

→扩展

image.png

→仅勾选data→确定

image.png

→扩展

image.png

→加载更多

image.png

→仅勾选mainCommentList→确定

image.png

→扩展

image.png

→扩展

image.png

→仅选中content→确定

image.png

→soldCount右侧的倒三角

image.png

→将null前面的勾去除→确定

image.png

→关闭并上载

image.png

→得到10万+数据

image.png

共享给好友时,结合实际情况修改出发地。步骤:将温州改为上海

image.png

→数据→显示查询

image.png

→双击右侧表1,转至查询编辑器界面

image.png

→刷新预览

image.png

→出发地倒三角符号→加载更多

image.png

→关闭并上载(这里先把原先以温州为出发地的表格删除,然后才能加载成功)→右击表1→加载到

image.png

→单击表左侧圆圈→加载

image.png

→10万+数据加载成功

image.png

也可添加多个出发地。步骤:在温州下行,分别键入杭州、上海

image.png

→数据→显示查询

image.png

→双击右侧表1,转至查询编辑器界面

image.png

→刷新预览

image.png

→出发地倒三角符号

image.png

→加载更多→确定

image.png

→关闭并上载

image.png

→右击表1→加载到

image.png

→单击表左侧圆圈→加载

image.png

→30万+数据大功告成!

image.png

希望大家可以陪我一起,成长21天。

推荐 0
本文由 零一老师 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册