首页 > 解决方案 > 在 PowerShell 中,有没有办法在不使用浏览器的情况下获取 URL 的文本?

问题描述

站点本身必须登录——我使用 COM 对象作为“幽灵用户”登录。有一个带有表格的页面,我可以通过发送击键来复制该表格,收集保存到剪贴板/文本文件的 urls/ids/其他信息列表。使用 com 对象,我可以打开该文件中的每个 url 元素(只要我已登录)并获取文档请求中的页面文本,但只有在页面加载之后(太快返回部分页)。

这在 15,000 个页面/url 上非常慢,我希望提高速度而不必渲染每个 url(我什至必须将每个 url 放入一个循环中进行检查,以防加载失败)

有没有办法从网页的 URL 中获取各种 label:LabelValue 属性而不加载它?编辑*我有代码:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$ie = New-Object -ComObject 'internetExplorer.Application'
$user = "me"; $pw = "pw"
$ie.Visible = $true
$ie.Navigate("https://Loginscreen.com")
$userField = $ie.document.getElementByID('login')
$usernamefield.value = "$user"
$passwordfield = $ie.document.getElementByID('password')
$passwordfield.value = "$pw"
$Link = $ie.document.getElementByID('SubmitLogin')
$Link.click()
$ieProc = Get-Process | ? { $_.MainWindowHandle -eq $ie.HWND }
[Microsoft.VisualBasic.Interaction]::AppActivate($ieProc.Id)
$fc = gc "C:\TempProject.txt"
foreach ($f in $fc)
{
  $url = $f.split("`t")[-1]
  $HTML = Invoke-WebRequest $url 
  $body = $HTML.ParsedHTML.body.innerText
  $body
}

但是,它似乎返回了有关登录页面的一般信息......我在网页上找不到任何我想要的任何内容的引用——HTML 标记信息或文本本身。

标签: powershellinternet-explorer

解决方案


如果您的意思是“有没有办法在不使用浏览器的情况下获取 URL 的文本?” 答案是压倒性的,响亮的是!尝试 Invoke-WebRequest 并查看 Content 属性是否具有您要查找的内容。从文本中抓取 HTML 仍然是您需要手动执行的操作,或者使用不同的包从水果中抓取多汁的部分。


推荐阅读