请问:用Power Query采集网站http://zq.win007.com/cn/team/Summary/88.html
只能采集“进攻数据“内容。防守数据通过点击,可以看到,却不能采集。
网站的数据:1、进攻数据。2防守数据
2,点击防守数据后,出现防守数据
采集后,只有进攻数据
以我小白的能力,现在只能找到这里,却没有办法找到防守数据的网址。
请各位大侠帮忙看看,如何采集防守数据,谢谢
请问:用Power Query采集网站http://zq.win007.com/cn/team/Summary/88.html
只能采集“进攻数据“内容。防守数据通过点击,可以看到,却不能采集。
网站的数据:1、进攻数据。2防守数据
2,点击防守数据后,出现防守数据
采集后,只有进攻数据
以我小白的能力,现在只能找到这里,却没有办法找到防守数据的网址。
请各位大侠帮忙看看,如何采集防守数据,谢谢
都在同一个字段里面。
点击进攻或者防守,其中有个语句style="display: none;起作用,用Power Query,就是只能够采集到进攻数据,真是不知道问题在哪里
网站没了
SummaryJs.js 里的ClickTechType函数监听对"进攻数据"、"防守数据"的点击事件,控制切换style样式为diplay:none或者为空。所需数据完全在网页按F12或者Ctrl+Shift+I(检查)可见,而不必翻页(showpage函数及作用于techLogic对象的showPageCountList方法也控制分页显示)。Power Query的Web.Contents得到网页的二进制数据,Text.FromBinary或者Lines.FromBinary解析又无法提供更多信息,同时Web.Page函数没找到可以模拟点击事件的方法 ,WebAction.Request又暂不可用,在浏览器终端利用JavaScript获得数据倒是可以。值得注意的一点是,不同版本Excel和PowerBI Desktop上的Web.Page解析网页结构化数据的效果可能是不一样的,最新版的效果看着好些。
需要锚定获取数据的区域,如利用document.getElementsByClassName("data")
,document.getElementsByTagName("tbody")
,document.getElementById("Tech_sclass")
,来初步定位数据。考虑利用Data URLs( data URI scheme)来包装及下载数据,利用畅心老师的前端下载的现成代码再加工下就成。在网站对应的浏览器终端输入如下
var tb=document.getElementsByClassName("data")[3].getElementsByTagName("tbody")[0].innerHTML;
var tb=tb.replace(/style="display: none;"/g,'');
var template =`<html><head><meta charset="UTF-8"></head><body><table>${tb}</table></body></html>`;
window.location.href = 'data:application/vnd.ms-excel;base64,' + btoa(unescape(encodeURIComponent(template)));```
得到的结果是进攻数据和防护数据混合在一起的html格式的伪excel文件(需要excel打开启用编辑然后再另存一下就OK了),如果需要分门别类的,尚需考虑。
抓取类似方式呈现的数据,可能Python、C#等更在行些,或者选用一些第三方的网抓、采集工具,如码栈、八爪鱼等。由于学识尚浅,部分描述可能有技术性错误,见谅。
![file](https://pbihub.cn/uploads/images/201911/09/73/8jtAFWHNeT.png)
感谢geyee回复,用Power Query也是初步,
“在网站对应的浏览器终端输入如下”下面的代码,
我都不知道代码在哪里输入,见谅