首页 > 解决方案 > 登录页面后面的网页抓取内容

问题描述

我的目标是从我必须使用 PowerShell 登录的网页中抓取数据。为了透明,这是一个房地产类型的网站,我不知道有其他人试图抓取这些数据,所以我真的不想泄露完整的 URL。

我有工作代码,我相信它可以登录到网页,但试图访问除此之外的任何 URL 以某种方式表示我没有登录并且不返回任何数据。

此代码是在登录和导航到所需内容列表时观察 Opera 浏览器的开发工具的结果。我可以右键单击并将 GET 请求复制为 PowerShell,但即使将其发回也没有成功。

$DashboardGet返回带有登录 URL 的链接属性,它告诉我我正在发送的数据(在标题中?或在 SessionVariable 中)没​​有正确地保持会话登录?

但是我可以看到并确认$PageLogin确实已登录该网站,但我似乎无法获取除此之外的任何内容。

$base_URL = 'https://site.webpage.com/'

$site = Invoke-WebRequest $base_URL

$user = Import-Clixml C:\Apps\website_login.xml

$site.Forms.fields.email = $user.UserName

$site.Forms.fields.password = $user.Password

$LoginPayload = $site.Forms.fields | ConvertTo-Json

$loginSite = $site.Forms[0].Action

$PageLogin = Invoke-WebRequest $loginSite -UseBasicParsing -Method POST -Body $LoginPayload -SessionVariable ScapeWebPage

$ScapeWebPage.Cookies.Add((New-Object System.Net.Cookie("XSRF-TOKEN", "lots of boring characters here", "/", "site.webpage.com")))
$ScapeWebPage.Cookies.Add((New-Object System.Net.Cookie("key01", "more boring characters", "/", "site.webpage.com")))

$DashboardGet = Invoke-WebRequest -UseBasicParsing -Uri "https://site.webpage.com/app/dashboard" `
-WebSession $ScapeWebPage -Method GET

$DashboardGet

标签: powershellweb-scraping

解决方案


推荐阅读