【问题标题】:GetElements from a URL with powershell使用 powershell 从 URL 获取元素
【发布时间】:2021-12-22 04:31:42
【问题描述】:

我正在尝试获取每个对象的所有链接,以便记录哪些项目是新的,哪些是旧的

我不明白如何从购物网站抓取链接...

这是有效的代码。

$URI = 'http://superwidgets.wordpress.com/category/sql/'
$HTML = Invoke-WebRequest -Uri $URI
($HTML.ParsedHtml.getElementsByTagName('h2') | Where{ $_.className -eq 'entry-title' } )

(参考:https://social.technet.microsoft.com/wiki/contents/articles/26009.getting-information-from-web-pages-via-powershell.aspx

这段代码没有

$url = 'https://www.norrona.com/nb-NO/o/herre/?displaysize=L%7CM&s=7&h=69000'
$x = Invoke-WebRequest -Uri $URL
($x.ParsedHtml.getElementsByTagName('div') | Where{ $_.className -eq 'productcard' } )

为什么?

【问题讨论】:

    标签: javascript html json xml powershell


    【解决方案1】:

    这可行,但没有具有productcard 类名的div 元素。 HtmlJavascript 只是从 PowerShell 检索时不会被任何浏览器呈现的一堆文本。这意味着所有的javascript 都没有被执行。

    有一个<script> 元素是:

    <script src="/api/translation/JavascriptInject?groups=Global&amp;groups=ProductList&amp;groups=Product&amp;groups=Payment&amp;groups=PrePurchase"></script>
    <main id="vueProductList" role="main">
    </main>
    

    可能应该调用它来呈现您要查找的元素。 但这是对另一个可能返回 javascript objects 的网络资源的另一个调用。这并不能说明objects 在由javascript 代码呈现时是否会使用productcard CSS 类进行样式设置。

    这可能不是获取产品列表的正确方法。您应该直接访问 API(如果可用)以获取产品列表。然后,您可以使用 PowerShell 通过 ConvertFrom-Json cmdlet 将 json 转换为 powershell 对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      • 2020-03-11
      • 2014-05-14
      • 1970-01-01
      • 2018-11-29
      • 1970-01-01
      • 2021-06-06
      相关资源
      最近更新 更多