平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“Powershell 获取特定的网页信息的代码”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
落到代码里,Powershell能够很轻松的拿到网页的信息同时读取到对应的内容。如果对象的格式是XML或者Json,那就更容易处理了,一般经常采用invoke-restmethod和invoke-webrequest这两个命令。前者主要是拿到Json格式的内容,后者能够拿到整个网页的内容。
例如我希望查询明天悉尼的天气如何。网上随便搜了一个提供API的站点
(链接已移除)
我打算搜索悉尼的,那么对应的格式是
(链接已移除),au他会自动生成一个Json格式的结果。

我们能够用invoke-restmethod直接拿到这个结果,例如
$b=invoke-restmethod "http://api.openweathermap.org/data/2.5/weather?q=sydney,au"
$c=[pscustomobject]@{
'Description'=$b.weather.description
'name'=$b.name
'windspeed'=$b.wind.speed
}

落到代码里,我也能够直接采用invoke-webrequest抓取整个网页的内容,随后从Json的格式转换过来也是一样的
$a= Invoke-WebRequest -Uri "(链接已移除),au"$b=$a.Content | ConvertFrom-Json
在这个场景下,类似的,如果我想拿到一个博客的RSS的最新内容。能够采用invoke-webrequest抓取对应的XML文件,比如
[xml]$a= Invoke-WebRequest -Uri "(链接已移除) | select title,pubdate

功能很强大,采用却很轻松。
本文出自 “麻婆豆腐” 博客