StackOverflow 问题线程中的每个答案或评论都有一个唯一的 URL。我们如何将该 URL 与 Invoke-WebRequest
(或其他工具)一起使用来捕获迷你 Markdown 中的答案或评论的内容,并从中获取一些有用的信息?
一些答案包含完整的脚本,我有时希望自动检索到各种系统上的 .ps1
文件中。例如,给定此 URL https://superuser.com/questions/176624/linux-top-command-for-windows-powershell/1426271#1426271 ,我想仅获取 PowerShell 代码部分并将其通过管道传输到名为 mytop.ps1
的文件中。
最佳答案
您可以使用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 脚本的元素,例如。 G。按长度排序并检查代码是否由多行组成。
关于PowerShell,下载 StackOverflow 答案或评论的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74395286/