Powershell(6)——从浏览器取数据到表格

wils
wils

创作者俱乐部成员

继续前面介绍的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宏里写请求获取数据方便,但更多时候,网站需要登录,需要验证,与其和他们斗智斗勇去逆向,不如写个油猴脚本,从浏览器这边批量查询写入表比较方便,不用动脑就是好🤣

海南省
浏览 374
1
8
分享
8 +1
2
1 +1
全部评论 2
 
Liquor
打卡
· 新疆
回复
 
寻梦
打卡
· 安徽省
回复