[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. #&cls&@cd /d "%~dp0" & powershell -c "Get-Content '%~0' | Select-Object -Skip 1 | Out-String | Invoke-Expression" &pause&exit
  2. cls
  3. #whr
  4. $whr = New-Object -ComObject 'WinHttp.WinHttpRequest.5.1'
  5. #函数 获取一页列表
  6. function Get-PageList($page){
  7.     $url = 'https://www.km.com/tv/-----{0}.html' -f $page
  8.     $whr.Open('GET',$url,$false)
  9.     $whr.Send()
  10.     if($whr.Status -eq 200){
  11.         $txt = $whr.ResponseText
  12.         $whr.Abort()
  13.         $pattern = '(?<=<div class="filter_res_image scale_image_container">\s+<a href=").*?(?=")'
  14.         [regex]::Matches($txt,$pattern) | foreach {
  15.             if($_.Value -match '/(\d+).html$'){
  16.                 $Matches[1]
  17.             }
  18.         }
  19.     }
  20. }
  21. #函数 获取主要信息
  22. function Get-MainInfo($key){
  23.     #主要信息界面
  24.     $url = 'https://www.km.com/tv/{0}.html' -f $key
  25.     $whr.Open('GET',$url,$false)
  26.     $whr.Send()
  27.     $txt = $whr.ResponseText
  28.     $whr.Abort()
  29.     #标题
  30.     $pattern = '(?s)<div class="inside-title.*?>.*?>(.*?)<'
  31.     if($txt -match $pattern){
  32.         '名称: TTT' + $Matches[1]
  33.         Write-Host ('解析电视剧: ' + $Matches[1])
  34.     }
  35.     #图片地址
  36.     $pattern = '(?s)<div class="video_poster.*?">.*?<img src="(.*?)"'
  37.     if($txt -match $pattern){
  38.         '图片地址: ''https:' + $Matches[1]
  39.     }
  40.     #概览
  41.     "`r`n【概览】"
  42.     $pattern = '(?s)mr20">(.*?)<a class="unfold"'
  43.     if($txt -match $pattern){
  44.         $t = $Matches[1] -replace '(?s)<script>.*?</script>','' -replace '<.*?>','' -replace '\s{2,}',''
  45.         $t -replace '(导演:)|(主演:)|(地区/类型:)|(剧情集数:)|(播出时间:)|(在线观看网站:)|(别名:)|(片长:)',("`r`n" + '$0')
  46.     }
  47.     #分数
  48.     $pattern = '(?s)<p class="score_num.*?>.*?>(.*?)<'
  49.     if($txt -match $pattern){
  50.         '综合评分: ' + $Matches[1]
  51.     }
  52.     #幕后信息
  53.     "`r`n【幕后信息】"
  54.     $pattern = '(?s)幕后信息</div>(.*?)<a class="intro_fold'
  55.     if($txt -match $pattern){
  56.         $Matches[1] -replace '<.*?>','' -replace '\s{2,}','' -replace '(编剧:)|(制片人:)|(TV首播时间:)|(在线播放平台:)|(出品公司:)|《',("`r`n" + '$0')
  57.     }
  58.     #演员表
  59.    "`r`n【演员表】"
  60.     $url = 'https://www.km.com/tv/yanyuan/{0}.html' -f $key
  61.     $whr.Open('GET',$url,$false)
  62.     $whr.Send()
  63.     $txt = $whr.ResponseText
  64.     $whr.Abort()
  65.     $pattern = '(?s)<div class="actor-list-detail same_col">.*?<div class="actor-works same_col_bottom">'
  66.     [regex]::Matches($txt,$pattern) | foreach {
  67.         'ZZZ' + ($_.Value -replace '<.*?>','' -replace '\s{2,}','' -replace '饰演'," 饰演 ")
  68.     }
  69.     #人物介绍
  70. "`r`n【人物介绍】"
  71.     $url = 'https://www.km.com/tv/role/{0}.html' -f $key
  72.     $whr.Open('GET',$url,$false)
  73.     $whr.Send()
  74.     $txt = $whr.ResponseText
  75.     $whr.Abort()
  76.     $pattern = '(?s)<div class="role-name">.*?<div class="role-intro-js">'
  77.     [regex]::Matches($txt,$pattern) | foreach {
  78.         $_.Value -replace '<.*?>','' -replace '\s{2,}','' -replace '演员',' 演员' -replace '-->简介:',"-->简介:`r`n`t"
  79.     }
  80. }
  81. #函数 一页数据保存为一个文件
  82. function Save-PageInfo($page){
  83.     #如果本页已解析,则跳过
  84.     $f = 'page_{0:000}.txt' -f $page
  85.     if([System.IO.File]::Exists($f)){
  86.         '第{0}页已解析,跳过...' -f $page
  87.         return;
  88.     }
  89.     #开始解析
  90.     &{
  91.         Get-PageList -page 1 | foreach {
  92.             Get-MainInfo -key $_
  93.             '----------------------------------'
  94.         }
  95.     } | Out-File $f
  96. }
  97. #解析并保存第一页数据
  98. Save-PageInfo -page 1
复制代码
1

评分人数

TOP

回复 9# lxh623


    地址你保存的这种格式?
  1. https://www.km.com/tv/98324.html
  2. https://www.km.com/tv/96830.html
  3. https://www.km.com/tv/56848.html
  4. https://www.km.com/tv/97869.html
  5. https://www.km.com/tv/94010.html
  6. https://www.km.com/tv/97924.html
  7. https://www.km.com/tv/96880.html
  8. https://www.km.com/tv/99023.html
  9. https://www.km.com/tv/58624.html
  10. https://www.km.com/tv/95650.html
  11. https://www.km.com/tv/96842.html
  12. https://www.km.com/tv/97604.html
  13. https://www.km.com/tv/94180.html
  14. https://www.km.com/tv/99840.html
  15. https://www.km.com/tv/93130.html
  16. https://www.km.com/tv/57571.html
  17. https://www.km.com/tv/98348.html
  18. https://www.km.com/tv/97183.html
  19. https://www.km.com/tv/99770.html
  20. https://www.km.com/tv/61631.html
  21. https://www.km.com/tv/97788.html
  22. https://www.km.com/tv/95876.html
  23. https://www.km.com/tv/97131.html
  24. https://www.km.com/tv/58078.html
复制代码
1

评分人数

TOP

本帖最后由 went 于 2021-10-4 18:34 编辑

url保存为楼上格式,a.txt
#变量设置
$cur_file = 'pass.txt' #保存已读取的个数
$url_file = 'a.txt'    #URL列表文件
$out_file = 'info.txt' #输出信息文件
  1. #&cls&@cd /d "%~dp0" & powershell -c "Get-Content '%~0' | Select-Object -Skip 1 | Out-String | Invoke-Expression" &pause&exit
  2. cls
  3. #whr
  4. $whr = New-Object -ComObject 'WinHttp.WinHttpRequest.5.1'
  5. #函数 获取主要信息
  6. function Get-MainInfo($key){
  7.     #主要信息界面
  8.     $url = 'https://www.km.com/tv/{0}.html' -f $key
  9.     $whr.Open('GET',$url,$false)
  10.     $whr.Send()
  11.     $txt = $whr.ResponseText
  12.     $whr.Abort()
  13.     #标题
  14.     $pattern = '(?s)<div class="inside-title.*?>.*?>(.*?)<'
  15.     if($txt -match $pattern){
  16.         '名称: TTT' + $Matches[1]
  17.         Write-Host ('解析电视剧: ' + $Matches[1])
  18.     }
  19.     #图片地址
  20.     $pattern = '(?s)<div class="video_poster.*?">.*?<img src="(.*?)"'
  21.     if($txt -match $pattern){
  22.         '图片地址: https:' + $Matches[1]
  23.     }
  24.     #概览
  25.     "`r`n【概览】"
  26.     $pattern = '(?s)mr20">(.*?)<a class="unfold"'
  27.     if($txt -match $pattern){
  28.         $t = $Matches[1] -replace '(?s)<script>.*?</script>','' -replace '<.*?>','' -replace '\s{2,}',''
  29.         $t -replace '(导演:)|(主演:)|(地区/类型:)|(剧情集数:)|(播出时间:)|(在线观看网站:)|(别名:)|(片长:)',("`r`n" + '$0') -replace "主演:.*?`r`n",''
  30.     }
  31.     #分数
  32.     $pattern = '(?s)<p class="score_num.*?>.*?>(.*?)<'
  33.     if($txt -match $pattern){
  34.         '综合评分: ' + $Matches[1]
  35.     }
  36.     #获取剧情介绍内容和总集数
  37.     $plot_main = ''
  38.     $pattern = '剧情介绍:.*?>(.*?)<'
  39.     if($txt -match $pattern){
  40.         $plot_main = $Matches[1]
  41.     }
  42.     $pattern = '>\(全部&nbsp;(\d+)<'
  43.     if($txt -match $pattern){
  44.         $part = $Matches[1]
  45.     }
  46.    
  47.     #幕后信息
  48.     "`r`n【幕后信息】"
  49.     $pattern = '(?s)幕后信息</div>(.*?)<a class="intro_fold'
  50.     if($txt -match $pattern){
  51.         $Matches[1] -replace '<.*?>','' -replace '\s{2,}','' -replace '(编剧:)|(制片人:)|(TV首播时间:)|(在线播放平台:)|(出品公司:)|《',("`r`n" + '$0')
  52.     }
  53.     #演员表
  54.    "`r`n【演员表】"
  55.     $url = 'https://www.km.com/tv/yanyuan/{0}.html' -f $key
  56.     $whr.Open('GET',$url,$false)
  57.     $whr.Send()
  58.     $txt = $whr.ResponseText
  59.     $whr.Abort()
  60.     $pattern = '(?s)<div class="actor-list-detail same_col">.*?<div class="actor-list-detail same_col">'
  61.     [regex]::Matches($txt,$pattern) | foreach {
  62.         if($_.Value.Contains('<em>饰</em><em>演</em>')){
  63.             'ZZZ' + $_.Value -replace '<.*?>|\s{2,}',''-replace '饰演'," 饰演 " -replace '最近作品:.*$',''
  64.         }
  65.     }
  66.     #人物介绍
  67.    "`r`n【人物介绍】"
  68.     $url = 'https://www.km.com/tv/role/{0}.html' -f $key
  69.     $whr.Open('GET',$url,$false)
  70.     $whr.Send()
  71.     $txt = $whr.ResponseText
  72.     $whr.Abort()
  73.     $pattern = '(?s)<div class="role-name">.*?<div class="role-intro-js">'
  74.     [regex]::Matches($txt,$pattern) | foreach {
  75.         $_.Value -replace '<.*?>','' -replace '\s{2,}','' -replace '演员',' 演员' -replace '-->简介:',"-->简介:`r`n`t"
  76.     }
  77.     #解析分集剧情
  78.     Get-PartInfo -key $key -title $plot_main -max $part
  79.     '-----------------------------------------------------------------------------'
  80. }
  81. #函数 解析分集剧情
  82. function Get-PartInfo($key,$title,$max){
  83. "`r`n【分集剧情】"
  84.     "`t剧情介绍`n`t`t" + $title
  85.     for($i = 1; $i -le $max; $i++){
  86.         "`t第{0}集`t`t" -f $i
  87.         $url = 'https://www.km.com/tv/{0}/2_{1}.html' -f $key,$i
  88.         #读取网页内容
  89.         $whr.Open('GET',$url,$false)
  90.         $whr.Send()
  91.         $txt = $whr.ResponseText
  92.         $whr.Abort()
  93.         #解析剧情内容
  94.         $pattern = '(?s)<div class="article-content">.*?</div>'
  95.         if($txt -match $pattern){
  96.             "`t`t" + ($Matches[0] -replace '<.*?>','' -replace '\s{2,}',' ').Trim()
  97.         }
  98.     }
  99. }
  100. #变量设置
  101. $cur_file = 'pass.txt' #保存已读取的个数
  102. $url_file = 'a.txt'    #URL列表文件
  103. $out_file = 'info.txt' #输出信息文件
  104. #读取已经解析的个数
  105. $cur = 0
  106. if([System.IO.File]::Exists($cur_file)){
  107.     $line = Get-Content $cur_file | Select-Object -First 1
  108.     if($line -match '\d+'){
  109.         $cur = [int]$line
  110.     }
  111. }
  112.         Write-Host ('上次解析个数: {0}' -f $cur)
  113. #读取url并解析内容
  114. Get-Content $url_file | Select-Object -Skip $cur | foreach {
  115.     if($_ -match 'https://www.km.com/tv/(\d+).html'){
  116.         #解析内容
  117.         Get-MainInfo -key $Matches[1] | Out-File $out_file -Append
  118.         #保存当前进度
  119.         ++$cur
  120.         Out-File -InputObject $cur -FilePath $cur_file
  121.     }
  122. }
复制代码
1

评分人数

TOP

回复 12# lxh623


    加上了

TOP

本帖最后由 went 于 2021-10-5 15:54 编辑

回复 14# lxh623


    b.txt保存电视剧名称,ansi编码
  1. 夺金
  2. 光芒
  3. 一生一世
  4. 叛逆者
  5. 火红年华
  6. 国子监来了个女弟子
  7. 君九龄
  8. 周生如故
  9. 乔家的儿女
  10. 扫黑风暴
  11. 程序员那么可爱
  12. 功勋
  13. 夺金战
  14. 当爱情遇上科学家
  15. 双刺
  16. 燃烧大地
  17. 启航:当风起时
  18. 你好检察官
  19. 我哥我嫂
  20. 理想之城
复制代码
test.bat脚本文件,ansi编码
  1. #&cls&@cd /d "%~dp0" & powershell -c "Get-Content '%~0' | Select-Object -Skip 1 | Out-String | Invoke-Expression" &pause&exit
  2. cls
  3. #whr
  4. $whr = New-Object -ComObject 'WinHttp.WinHttpRequest.5.1'
  5. #设置请求头
  6. function Set-RequestHeader($whr){
  7.     $whr.SetRequestHeader('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Edg/94.0.992.38');
  8.     $whr.SetRequestHeader('Host','www.tvmao.com')
  9.     $whr.SetRequestHeader('Connection','Keep-Alive')
  10. }
  11. #函数 根据关键字获取url链接
  12. function Get-Url($kw){
  13.     $url = 'https://www.tvmao.com/servlet/queryobject?type=all&term=' + [System.Net.WebUtility]::UrlEncode($kw)
  14.     $whr.Open('GET',$url,$false)
  15.     Set-RequestHeader -whr $whr
  16.     $whr.Send()
  17.     $txt = $whr.ResponseText
  18.     $whr.Abort()
  19.     if($txt -match '"url":"(.+?)"'){
  20.         return 'https://www.tvmao.com' + $Matches[1] + '/episode'
  21.     }
  22.     return $null
  23. }
  24. #函数 根据url链接获取所有分集的链接
  25. function Get-PartUrlList($url){
  26.     if($url -eq $null){
  27.         return $null
  28.     }
  29.     $whr.Open('GET',$url,$false)
  30.     Set-RequestHeader -whr $whr
  31.     $whr.Send()
  32.     $txt = $whr.ResponseText
  33.     $whr.Abort()
  34.     $pattern = '<div class="epipage.*?>.*?</div>'
  35.     if($txt -match $pattern){
  36.         $pattern = '(?s)href="(.*?)"'
  37.         return &{
  38.             [regex]::Matches($Matches[0],$pattern) | foreach {
  39.                 'https://www.tvmao.com' + $_.Groups[1].Value
  40.             }
  41.         }
  42.     }
  43.     return $null
  44. }
  45. #函数 根据分集url获取分集剧情
  46. function Get-PartInfo($part_url){
  47.     if($part_url -match '-(\d+)$'){
  48.         Write-Host ('解析第{0}集 {1}' -f $Matches[1],$part_url)
  49.         '第{0}集' -f $Matches[1]
  50.     } else {
  51. return;
  52. }
  53.     $whr.Open('GET',$part_url,$false)
  54.     Set-RequestHeader -whr $whr
  55.     $whr.Send()
  56.     $txt = $whr.ResponseText
  57.     $whr.Abort()
  58.     $pattern = '(?s)<article class=".*?epi_c">.*?</article>'
  59.     if($txt -match $pattern){
  60.         $Matches[0] -replace '(?s)<.*?>','' -replace '(?s)\(.*?转载许可\).*$',''
  61.     }
  62. }
  63. #变量设置
  64. $cur_file = 'pass.txt' #保存已读取的个数
  65. $list_file = 'b.txt'   #电视剧名称列表文件
  66. $out_file = 'info.txt' #输出信息文件
  67. #读取已经解析的个数
  68. $cur = 0
  69. if([System.IO.File]::Exists($cur_file)){
  70.     $line = Get-Content $cur_file | Select-Object -First 1
  71.     if($line -match '\d+'){
  72.         $cur = [int]$line
  73.     }
  74. }
  75. Write-Host ('上次解析个数: {0}' -f $cur)
  76. #读取电视剧名称并解析内容
  77. Get-Content $list_file | Select-Object -Skip $cur | foreach {
  78.     $url = Get-Url -kw $_.Trim()
  79.     if($url -ne $null){
  80. Write-Host ('正在解析 {0} {1}' -f $_,$url)
  81. Write-Host '---'
  82.         $info = &{
  83.             '名称: {0}' -f $_.Trim()
  84.             Get-PartUrlList -url $url | foreach {
  85.                 Get-PartInfo -part_url $_
  86.             }
  87. '--------------------------------------------------'
  88.         }
  89.         Out-File -FilePath $out_file -InputObject $info -Append
  90.         Write-Host '--------------------------------------------------'
  91.     }
  92.     ++$cur
  93.     Out-File -FilePath $cur_file -InputObject $cur
  94. }
复制代码
1

评分人数

TOP

本帖最后由 went 于 2021-10-7 11:59 编辑
  1. #&cls&@cd /d "%~dp0" & powershell -c "Get-Content '%~0' | Select-Object -Skip 1 | Out-String | Invoke-Expression" &pause&exit
  2. cls
  3. #whr
  4. $whr = New-Object -ComObject 'WinHttp.WinHttpRequest.5.1'
  5. #设置请求头
  6. function Set-RequestHeader($whr){
  7.     $whr.SetRequestHeader('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Edg/94.0.992.38');
  8.     $whr.SetRequestHeader('Host','www.tvmao.com')
  9.     $whr.SetRequestHeader('Connection','Keep-Alive')
  10. }
  11. #函数 根据关键字获取url链接
  12. function Get-Url($kw){
  13.     $url = 'https://www.tvmao.com/servlet/queryobject?type=all&term=' + [System.Net.WebUtility]::UrlEncode($kw)
  14.     $whr.Open('GET',$url,$false)
  15.     Set-RequestHeader -whr $whr
  16.     $whr.Send()
  17.     $txt = $whr.ResponseText
  18.     $whr.Abort()
  19.     if($txt -match '"url":"(.+?)"'){
  20.         return 'https://www.tvmao.com' + $Matches[1] + '/renwuguanxitu'
  21.     }
  22.     return $null
  23. }
  24. #函数 根据url获取人物关系图
  25. function Get-GXT($url){
  26.     $whr.Open('GET',$url,$false)
  27.     Set-RequestHeader -whr $whr
  28.     $whr.Send()
  29.     $txt = $whr.ResponseText
  30.     $whr.Abort()
  31.     if($txt -match '(?s)<div class="d_guanxi_img".*?>.*?<img src="(.*?/guanxitu/.*?)"'){
  32.         return $Matches[1]
  33.     }
  34.     return $null
  35. }
  36. #变量设置
  37. $cur_file = 'pass.txt' #保存已读取的个数
  38. $list_file = 'c.txt'   #电视剧名称列表文件
  39. $out_file = 'info.txt' #输出信息文件
  40. #读取已经解析的个数
  41. $cur = 0
  42. if([System.IO.File]::Exists($cur_file)){
  43.     $line = Get-Content $cur_file | Select-Object -First 1
  44.     if($line -match '\d+'){
  45.         $cur = [int]$line
  46.     }
  47. }
  48. Write-Host ('上次解析个数: {0}' -f $cur)
  49. #读取电视剧名称并解析内容
  50. Get-Content $list_file | Select-Object -Skip $cur | foreach {
  51.     $url = Get-Url -kw $_.Trim()
  52.     if($url -ne $null){
  53. Write-Host ('正在解析 {0}' -f $_)
  54. $png_url = Get-GXT -url $url
  55.         if($png_url -eq $null){
  56.             'nothing'
  57.         } else {
  58.             $info = 'TTT{0}YYY人物关系图: {1}' -f ($_.Trim(),$png_url)
  59.             Out-File -FilePath $out_file -InputObject $info -Append
  60.         }
  61.         Write-Host '--------------------------------------------------'
  62.         Start-Sleep -Milliseconds 500
  63.     }
  64.     ++$cur
  65.     Out-File -FilePath $cur_file -InputObject $cur
  66. }
复制代码
回复 16# lxh623
1

评分人数

TOP

回复 17# went


    66行时间可以改长点,不然数据容易漏掉, 500 = 0.5秒

TOP

回复 21# lxh623


    点头像加我微信私聊

TOP

返回列表