我對Powershell非常新,只是將其用於個人內容。我一直在試驗從網站提取具體信息,以包含在發送給家人的電子郵件中。通過閱讀論壇,我使用Invoke-WebRequest
cmdlet獲得了不錯的效果,但很快就遇到了無法訪問在頁面加載時動態構建的內容的限制。Powershell - 無法弄清楚如何從IE對象獲取網頁內容
感謝這些論壇,我發現了IE對象以及如何提取數據。我有一個網站運氣好,但我嘗試過的另一個網站的工作不一樣。希望得到一點幫助。
下面是該頁面的檢查代碼片段,突出顯示了我的興趣目標。
下面就是我想提取文本字符串的代碼。我嘗試了許多迭代和方法,但都沒有成功。奇怪的是,雖然$ie.Document
對象應該有一個「body」對象,但是當我嘗試訪問它時,我得到一個空對象錯誤。我注意到Document對象本身有一個getElementsByTagName
方法,所以我試過了。它沒有getElementsByClassName
方法。
請注意,我加載的URL是「https」,所以我想知道這是否會導致問題。建議感激!如果我能夠得到周圍的HTML塊,我很好地做一些字符串操作來獲得我想要的。
# Create IE object and load URL
$WeatherURL = "https://weather.com/weather/today/l/77630"
$ie = New-Object -comobject "InternetExplorer.Application"
$ie.visible = $true
$ie.navigate($WeatherURL)
# Wait for the page to load
while ($ie.Busy -eq $true -Or $ie.ReadyState -ne 4) {Start-Sleep 2}
$Doc = $ie.Document
$Weather0 = $Doc.getElementsByTagName('span') `
| ?{$_.getAttribute('class') -eq "today-wx-descrip"} | Select-Object -First 1
糟糕,你是對的,但在我的一個迭代中,雖然黑客這個我固定的。我已經替換了OP中的代碼片段。運行時,我得到的內存不足錯誤。 – tkcas