Board logo

标题: [问题求助] PowerShell如何用irm获取某个网页中的指定的下载链接? [打印本页]

作者: meixi    时间: 2024-8-10 17:51     标题: PowerShell如何用irm获取某个网页中的指定的下载链接?

https://www.nuget.org/packages/python
我想用irm命令获取上面网页链接中的 "Download package" 文本的链接地址, 如下图所示, 或者还有更好的办法吗? 提前感谢
http://www.picgo.net/image/A.kIeRWp
作者: meixi    时间: 2024-8-10 18:37

下面代码可以获取, 但是速度太慢了
  1. # 设置目标URL
  2. $url = "https://www.nuget.org/packages/python"
  3. # 下载网页内容
  4. $html = Invoke-WebRequest -Uri $url
  5. # 查找包含 "Download package" 文本的链接
  6. $downloadLink = $html.Links | Where-Object { $_.innerText -eq "Download package" }
  7. # 输出 href 属性
  8. $downloadLink.href
复制代码

作者: aloha20200628    时间: 2024-8-10 19:03

本帖最后由 aloha20200628 于 2024-8-10 19:29 编辑

回复 1# meixi

假设已被下载的指定网页文件为 1.xml,用如下的批处代码可获取网页文件中包含关键词 ‘Download package’ 的a标签链址
  1. @echo off &(for /f tokens^=2^delims^=^" %%a in ('findstr /ic:">Download package<" 1.xml') do echo,%%a
  2. pause&exit/b
复制代码
不用下载 wget 等第三方专业下载工具即可直接下载网页的方法,已经试过 certutil.exe 和 powershell,其中 invoke-webrequest 最慢,(new-object System.Net.WebClient).DownloadFile 稍快...
  1. @echo off &certutil -urlcache -split -f "https://www.nuget.org/packages/python" "1.xml">nul 2>nul
  2. for /f tokens^=2^delims^=^" %%a in ('findstr /ic:">Download package<" 1.xml') do echo,%%a
  3. pause&exit/b
复制代码
  1. @echo off &powershell -c "(new-object System.Net.WebClient).DownloadFile('https://www.nuget.org/packages/python', '1.xml')"
  2. for /f tokens^=2^delims^=^" %%a in ('findstr /ic:">Download package<" 1.xml') do echo,%%a
  3. pause&exit/b
复制代码
</size>
作者: meixi    时间: 2024-8-10 19:33

回复 3# aloha20200628


    感谢支招, 不想用cmd, 想用powershell或c#函数
作者: aloha20200628    时间: 2024-8-10 21:00

本帖最后由 aloha20200628 于 2024-8-10 21:02 编辑

回复 4# meixi

以下代码要比2楼代码快一些...
  1. (new-object System.Net.WebClient).DownloadFile('https://www.nuget.org/packages/python','1.xml')
  2. (((gc 1.xml)|sls '>Download package<') -split '"')[1]
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2