200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > Java模拟生意参谋登录_用Excel实现生意参谋爬虫 伪装登陆状态

Java模拟生意参谋登录_用Excel实现生意参谋爬虫 伪装登陆状态

时间:2020-12-18 08:22:06

相关推荐

Java模拟生意参谋登录_用Excel实现生意参谋爬虫 伪装登陆状态

因为在Excel里面难以实现自动登录

今天介绍一种用PowerQuery爬取生意参谋数据的方法,只作学习用,拓展一下思维,切忌大量爬取生意参谋数据,以免被封!

需要用到M语言的几个函数:

Json.Document() 用来解析Json代码

Web.Contents(url,[Headers=headers,Query=query]) 用来获取页面数据

首先找到想要爬取的数据,此文以爬取生意参谋-首页-整体看板的数据为例。

想要爬取数据,首先要找到数据在哪里。

鼠标右击网页任意位置,选择“审查元素,或者”按F12健。

点击”Network”,然后点击”XHR”,数据就藏在左侧的文件中,可以依次点击查看。

发现数据在getTrend.json这个文件下,在Preview标签中可以看到我们要爬的数据。

接下来我们需要获取3部分内容,URL,Headers,Query。点击Headers标签。

标红的部分是我们需要的内容(Headers部分从cookie开始复制,前面部分不需要),为便于编辑,可以把这3部分内容分别复制粘贴到记事本。

上图对代码的含义做了简单说明。接下来需要将3段内容进行简单的处理,以便PowerQuery能够正确识别。

先把输入法切换到英文状态。

url部分用“”引起来。

Headers部分,冒号左侧的内容用引号引起来,左边加上井号;冒号右侧的内容用引号引起来,冒号替换成等于号;cookie、referer和user-agent这3段之间的换行符删掉,然后用逗号隔开;最后把整体用[ ]括起来。

这段没看懂没关系,下面再讲一遍。

冒号两端用引起来

左边加井号

冒号换成等于号

删掉换行符,用逗号隔开。

整体用方括号括起来

3部分内容加工完毕,接下来打开Excel。

点击“数据“选项卡-”新建查询“-”从其他源“-“空白查询”

此时打开了查询编辑器(PowerQuery),现在需要一个自动生成时间戳的列。点击“高级编辑器”

打开了高级编辑器,将等号右边的内容替换成以下内容:

Number.IntegerDivide(Duration.TotalSeconds(DateTime.LocalNow()-

#datetime(1970,1,1,8,0,0)),1)

点击“已完成”按钮。

出现了时间戳的字段,点击“到表”按钮。

变成了表格形式,将列名重命名成“时间戳”

单击列名左侧图标,将字段类型设置成文本。

在url和query代码中,需要把包含时间戳的字段进行替换,以识别成对应的单元格。

中括号两边用&连接,外面需要被引号引起来。

接下来最关键的一步,把要爬取的数据解析出来。添加自定义列。

在自定义列公式中输入

Json.Document(Web.Contents(url,[Headers=headers,Query=query]))

先不要着急点确定,需要把url,headers,query这3个单词替换成上文整理好的3段对应代码。

然后点击“确定”按钮。

出现警告,不必担心,点击“继续”。

在弹出的隐私级别窗口中,点击右侧下拉箭头,选择“公共”,点击“保存”。

解析出了Record字段。点击右边的双向箭头图标,点击“确定”按钮。

继续点击双向箭头图标,点击“确定”按钮。

继续点击双向箭头图标,点击“确定”按钮。

鼠标右击Record这一列的列名,选择“删除其他列”。

点击双向箭头图标,可以把使用原始列名作为前缀前面的勾去掉,点击“确定”按钮。

表格变成了这种形式,此时不能直接将数据展开,需要改变一下形式,将List字段变成一列。

将3列选中(先点击第一列列名,选中第一列,按住Shift健,再选中最后一列),点击“转换”标签中

的“逆透视列”按钮,进行逆透视。

变成这种形式,然后点击双向箭头按钮。

点击“扩展到新行”。

得到了我们想要的数据。

文章到此结束。

本文重点在于解析的过程,提供一种爬虫的思路,后续数据清洗和整理过程不再赘述。

本文只爬取了支付金额,想同时爬取更多数据,可以在indexCode=payAmt后面添加其他指标代码即可,如indexCode=payAmt,uv即可同时爬取支付金额和访客数。

最后提醒:切忌大量爬取生意参谋数据,以免被封!切记!切记!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。