PowerShell,下载StackOverflow答案或注解的内容

rnmwe5a2  于 2022-11-29  发布在  Shell
关注(0)|答案(1)|浏览(110)

StackOverflow问题线程上的每个答案或评论都有一个唯一的URL。我们如何通过Invoke-WebRequest(或其他工具)使用该URL在mini-Markdown中捕获该答案或评论的内容,并从中获得一些有用的信息?
有些答案包含完整的脚本,我有时希望将这些脚本自动检索到不同系统上的.ps1文件中。例如,给定URL https://superuser.com/questions/176624/linux-top-command-for-windows-powershell/1426271#1426271,我希望只获取PowerShell代码部分,并将其通过管道导入名为mytop.ps1的文件中。

cngwdvgl

cngwdvgl1#

您可以使用StackExchange REST API提取问题,特别是answers-by-id
它仍然不能提供markdown,但是使用JSON响应而不是解析整个页面源代码,可以更容易地深入到答案的正文。实际上,我认为它输出答案正文的HTML甚至比markdown更好,因为您可以持续获得<code>元素,而不必解析all the different ways code can be formatted using markdown(例如代码围栏和缩进)。

$answer = Invoke-RestMethod 'https://api.stackexchange.com/2.3/answers/1426271?site=superuser&filter=withbody'

$codes = [RegEx]::Matches( $answer.items.body, '(?s)<code>(.*?)</code>' ).ForEach{ $_.Groups[1].Value }

# This gives you the PowerShell script for this particular answer only!
$codes[6]

由于可能存在多个<code>元素,您可能希望使用启发式方法来确定包含PowerShell脚本的元素,例如,按长度排序并检查代码是否由多行组成。

相关问题