标题: [问题求助] PowerShell获取html网页乱码, 链接文本不一致 [打印本页]
作者: 小白龙 时间: 2024-11-11 06:14 标题: PowerShell获取html网页乱码, 链接文本不一致
我想 获取 网页 https://tim.qq.com/download.html 中的 "windows版" 下面的 "下载" 按钮的链接, 遇到的问题是:
1.使用下面的代码获取到的html文本中中文显示为乱码,
2. 并且奇怪的是, html文本中的链接居然是老版本的链接:
https://dldir1.qq.com/qqfile/qq/TIM2.3.2/21168/TIM2.3.2.21168.exe
而实际手动打开网页后, 将鼠标放到按钮上的链接却显示如下, 真是出怪事了, 求大佬指教, 多谢
https://dldir1.qq.com/qqfile/qq/TIM3.5.0/TIM3.5.0.22143.exe
我是在powershell ise中测试的- cls
- # 请求地址
- $url = "https://tim.qq.com/download.html"
-
- # 发送请求并获取原始 HTML 内容
- $response = irm -Uri $url
-
-
- # 输出原始 HTML 内容以便检查
- Write-Host $response
复制代码
作者: went 时间: 2024-11-11 12:04
被js动态修改了href
解析下面api获取真实链接 https://im.qq.com/rainbow/TIMDownload/
或者使用selenium抓取
作者: flashercs 时间: 2024-11-11 12:19
- # download TIM.exe
- # ps5.1 $result.Content 乱码:utf8解析成ANSI,建议用pwsh 7+
- $result = Invoke-WebRequest -Uri 'https://im.qq.com/rainbow/TIMDownload/' -UseBasicParsing
- if ($result.Content -match '(?s)(?>var\s+params\s*=[^{]*)(?<body>\{(?>/\*.*?\*/|//[^\n]*|"(?>""|\\"|[^"])*"|[^{}]|(?<o>{)|(?<-o>}))*}(?(o)(?!)))') {
- $ojson = ConvertFrom-Json $Matches['body']
- $ojson.app.download
- }
复制代码
乱码不影响下载链接的读取.建议用pwsh 7+
作者: 小白龙 时间: 2024-11-11 13:23
回复 2# went
多谢楼上两位大佬,
请问 https://im.qq.com/rainbow/TIMDownload/ 这个链接是怎么得到的?
作者: 小白龙 时间: 2024-11-11 13:24
本帖最后由 小白龙 于 2024-11-11 13:29 编辑
回复 3# flashercs
大佬, 用Invoke-WebRequest 是不是不太可靠? 如果ie没有安装或初始化, 将获取不到html文本
另外, ps5.1乱码的问题, 怎样修复一下?
作者: flashercs 时间: 2024-11-11 14:02
回复 5# 小白龙
去掉参数 -UseBasicParsing 会解析htmldom
乱码解决可用用System.Net.WebClient- [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12
- $webclient = New-Object System.Net.WebClient
- $webclient.Encoding = New-Object System.Text.UTF8Encoding -ArgumentList $false
- $result = $webclient.DownloadString('https://im.qq.com/rainbow/TIMDownload/')
- if ($result -match '(?s)(?>var\s+params\s*=[^{]*)(?<body>\{(?>/\*.*?\*/|//[^\n]*|"(?>""|\\"|[^"])*"|[^{}]|(?<o>{)|(?<-o>}))*}(?(o)(?!)))') {
- $ojson = ConvertFrom-Json $Matches['body']
- $ojson.app.download
- }
- $webclient.Dispose()
复制代码
作者: went 时间: 2024-11-11 16:53
回复 4# 小白龙
f12
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |