Powershell(6)——从浏览器取数据到表格
创作者俱乐部成员
继续前面介绍的Powershell里的Pode模块
上次是用Pode开启web接口,在wps的JS宏里发请求获取数据
这次尝试反过来用,在浏览器里发送请求,写入wps表格
💡 | Start-PodeServer { Add-PodeEndpoint -Address 127.0.0.1 -Port 8080 -Protocol Http Add-PodeRoute -Method Post -Path '/' -ScriptBlock { Add-PodeHeader -Name 'Access-Control-Allow-Origin' -Value '*' $et = New-Object -ComObject ket.application $et.Visible = $true $wb = $et.Workbooks.Add() $n = 1 ($WebEvent.Data | ConvertFrom-Json) | %{ $wb.Sheets(1).Range("A" + ($n++)).Value2 = $_ } } } |
前三句还是一样,开启服务,在8080端口,根目录的POST请求
然后用Add-PodeHeader开启了跨域,也就是在浏览器里,可以从任何网站访问这个接口
后面就是熟悉的,用com对象操作wps表格的过程
创建ket.application对象
添加workbook
把接受的数据JSON解析,逐行写入A列
浏览器里可以写油猴脚本,也可以简单创建一个书签,内容是:
🔔 | javascript: fetch("http://127.0.0.1:8080/", {method: "POST", body:JSON.stringify(Array.from(document.querySelectorAll('.topic-title a')).map(x=>x.innerText))}) |
还是通过fetch,向本地的8080端口发送POST请求,内容是.topic-title a容器里的文字,也就是首页上帖子的标题
其实可以把上面的例子和前几天的例子结合起来,在浏览器里发GET请求,获取表格内的数据,用油猴脚本控制填入需要的表单,执行查询后,将结果再写入表格
这样的网抓,其实是把控制权都交给了浏览器,表格只是通过web接口,被读取被写入
有时候直接在JS宏里写请求获取数据方便,但更多时候,网站需要登录,需要验证,与其和他们斗智斗勇去逆向,不如写个油猴脚本,从浏览器这边批量查询写入表比较方便,不用动脑就是好🤣