首页 > 解决方案 > 解析 HTML,多个类

问题描述

我想创建一个 PowerShell 脚本来从网站获取信息。我试图找到该网站的以下 HTML 标记的第一次出现:

<div class="dDoNo gsrt"><span data-dobid="hdw">Text I want to find</span></div>

我使用以下 PowerShell 代码没有成功,没有输出:

$WebResponse = Invoke-WebRequest "https://www.google.co.in/search?hl=en&q=define+Text"
($WebResponse.ParsedHtml.GetElementsByTagName(‘div’) | Where {
    $_.ClassName -eq ‘dDoNo’
}).InnerText

更准确地说:我试图通过从谷歌抓取 HTML 来获取单词的定义,并使用这个类作为基础: googleDictionaryAPI 类

标签: htmlpowershell

解决方案


感谢@Ansgar 为我指出正确的解决方案。

主要问题是我从 Invoke-WebRequest 得到的响应与我从浏览器得到的响应不同。解决方案是在调用请求时定义一个 UserAgent:

$WebResponse = (Invoke-WebRequest -Uri "https://www.google.co.in/search?hl=en&q=define+Text" -UserAgent "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36")

($WebResponse.ParsedHtml.DocumentElement.GetElementsByTagName('div') | Where {
    $_.ClassName -match '\bdDoNo\b'
}).InnerText

推荐阅读