2016-09-14 37 views
0

我對Powershell非常新,只是將其用於個人內容。我一直在試驗從網站提取具體信息,以包含在發送給家人的電子郵件中。通過閱讀論壇,我使用Invoke-WebRequest cmdlet獲得了不錯的效果,但很快就遇到了無法訪問在頁面加載時動態構建的內容的限制。Powershell - 無法弄清楚如何從IE對象獲取網頁內容

感謝這些論壇,我發現了IE對象以及如何提取數據。我有一個網站運氣好,但我嘗試過的另一個網站的工作不一樣。希望得到一點幫助。

下面是該頁面的檢查代碼片段,突出顯示了我的興趣目標。

Web Page Snippet

下面就是我想提取文本字符串的代碼。我嘗試了許多迭代和方法,但都沒有成功。奇怪的是,雖然$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

回答

0

此時應更換

$Weather0 = $Doc.getElementsByTagName('span') ` 
| ?{$_.getAttribute('class') -eq "today-wx-description"} | Select-Object -First 1 

隨着

$Weather0 = $Doc.getElementsByTagName('span') ` 
| ?{$_.getAttribute('class') -eq "today-wx-descrip"} | Select-Object -First 1 

今天-WX-描述 VS 今天-WX-記述

+0

糟糕,你是對的,但在我的一個迭代中,雖然黑客這個我固定的。我已經替換了OP中的代碼片段。運行時,我得到的內存不足錯誤。 – tkcas