Использование Powershell для получения третьей таблицы с сайта - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь очистить таблицу Team Statistics из https://www.hockey-reference.com/leagues/NHL_2020.html, но не получаю ожидаемого полного результата.

Мой код:


#get the data
$data = Invoke-WebRequest $url

#get the first table
$table = $data.ParsedHtml.getElementsByTagName("table") | Select -skip 2 | Select -First 1 |

#get the rows
$rows = $table.rows

#get table headers
$headers = $rows.item(1).children | select -ExpandProperty InnerText

#count number of rows
$NumOfRows = $rows | Measure-Object

#Manually injecting TeamName
$headers = @($headers[0];'TeamName';$headers[1..($headers.Length-1)])

#enumerate the remaining rows (skipping the header row) and create a custom object
$out = for ($i=2;$i -lt $NumofRows.Count;$i++) {
 #define an empty hashtable
 $objHash=[ordered]@{}
 #get the child rows
 $rowdata = $rows.item($i).children | select -ExpandProperty InnerText 
 for ($j=0;$j -lt $headers.count;$j++) {
    #add each row of data to the hash table using the corresponding
    #table header value
    $objHash.Add($headers[$j],$rowdata[$j])
  } #for

  #turn the hashtable into a custom object
  [pscustomobject]$objHash
} #for 

Вывод:

Special Teams Shot Data          
------------- ---------          
Rk            AvAge              
1             Washington Capitals
2             St. Louis Blues    
3             Boston Bruins      
4             Pittsburgh Penguins
5             Tampa Bay Lightning
6             New York Islanders 
7             Colorado Avalanche 
8             Columbus Blue Ja...
9             Carolina Hurricanes
10            Vancouver Canucks  
11            Philadelphia Flyers
12            Dallas Stars       
13            Edmonton Oilers    
14            Toronto Maple Leafs
15            Florida Panthers   
16            Vegas Golden Kni...
17            Arizona Coyotes    
18            Calgary Flames     
19            Winnipeg Jets      
20            Chicago Blackhawks 
21            Buffalo Sabres     
22            Montreal Canadiens 
23            Nashville Predators
24            New York Rangers   
25            Minnesota Wild     
26            San Jose Sharks    
27            Anaheim Ducks      
28            Ottawa Senators    
29            New Jersey Devils  
30            Los Angeles Kings  
31            Detroit Red Wings  
League Ave... 27.8

Я считаю, что моя проблема заключается в том, что я выбираю, хотя я не смог выяснить, как выбрать все необходимые детали для этой спецификации c таблица.

В идеале я бы хотел, чтобы он выглядел примерно так же, как на веб-сайте, но получение всей выводимой статистики столь же хорошо.

...