找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 15271|回复: 6

【完结】抓取电视剧剧情+各50元

  [复制链接]
发表于 2021-10-10 17:47:24 | 显示全部楼层 |阅读模式
本帖最后由 lxh623 于 2021-10-12 07:21 编辑

文本内是网址、一行一个。
文本c是,https://www.tvzn.com/8406/
文本d是,https://www.tvmao.com/drama/Ym4mXGVf

想得到如下结果:(写入新的文本)
TTT上海沧桑
第1集
1925年,湖南醴陵。................
第2集
................
................

两个网站,一个五十元。
谢谢!
发表于 2021-10-10 19:32:03 | 显示全部楼层
本帖最后由 zaqmlp 于 2021-10-10 20:53 编辑
  1. <# :
  2. rem www.tvzn.com
  3. rem 另存为ANSI编码的bat
  4. cls&echo off&cd /d "%~dp0"
  5. powershell -NoProfile -ExecutionPolicy bypass "[IO.File]::ReadAllText('%~f0',[Text.Encoding]::GetEncoding('GB2312'))|Invoke-Expression"
  6. pause
  7. exit
  8. #>
  9. $infile='.\文本c.txt';
  10. $outfile='.\结果.txt';
  11. if(-not (test-path -liter $infile)){write-host ('"'+$infile+'" 未找到');exit;};

  12. $enc=[System.Text.Encoding]::UTF8;
  13. $webclient=New-Object System.Net.WebClient;
  14. function gethtml($u){
  15.     $t='';
  16.     for($j=1;$j -le 3;$j++){
  17.         try{
  18.             $webclient.Headers.Add('User-Agent','Mozilla/5.0 (Windows NT 6.1; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36');
  19.             $webclient.Encoding=$enc;
  20.             $t=$webclient.DownloadString($u);
  21.             break;
  22.         }catch{
  23.             write-host ('第'+$j.toString()+'次获取网页源码失败');
  24.             start-sleep -Seconds 3;
  25.         };
  26.     };
  27.     return $t;
  28. };

  29. $fs=New-Object System.IO.FileStream($outfile, [System.IO.FileMode]::Create);
  30. $sw=New-Object System.IO.StreamWriter($fs, $enc);
  31. $text=[IO.File]::ReadAllText($infile, $enc).split("`r`n",[StringSplitOptions]::RemoveEmptyEntries);
  32. for($i=0;$i -lt $text.Count;$i++){
  33.         write-host ('--------------'+$text[$i]+'--------------');
  34.         $url=$text[$i].trimend(' /')
  35.         $url1=$url+'/juqingjieshao.html';
  36.         $html1=gethtml $url1;
  37.         $title='TTT';
  38.         $m1=[regex]::match($html1,'>([^<]+?)</h1></div>');
  39.         if($m1.Success){$title=$title+$m1.groups[1].value.replace('剧情介绍','');}
  40.         write-host $title;
  41.         $sw.WriteLine($title);
  42.         $m1=[regex]::match($html1,'<div id="danji"[^>]*?>([\s\S]+?)</div></div></div>');
  43.         if($m1.Success){
  44.                 $m2=[regex]::matches($m1.groups[1].value, '<a class="link" href="([^"]+?)">(\d+)</a>');
  45.                 for($j=$m2.Count-1;$j -ge 0;$j--){
  46.                         $sw.WriteLine('第'+$m2[$j].groups[2].value+'集');
  47.                         $url2=($url -replace '^(https?://[^/]+).+','$1')+$m2[$j].groups[1].value;
  48.                         write-host ($m2[$j].groups[2].value+' '+$url2);
  49.                         $html2=gethtml $url2;
  50.                         $m3=[regex]::match($html2,'<div>.*?<center>.*?</center>.*?<br>([\s\S]+?)<div');
  51.                         if($m3.Success){
  52.                                 $contant=(($m3.groups[1].value -replace '<p>','') -replace '&nbsp;',' ') -replace '</p>',"`r`n";
  53.                                 $contant=$contant.trim();
  54.                                 $sw.WriteLine($contant);
  55.                                 $sw.Flush();
  56.                         }
  57.                 }
  58.         }
  59.         $sw.WriteLine('');
  60. }
  61. $sw.Close();
  62. $fs.Close();
复制代码

评分

参与人数 1技术 +1 收起 理由
lxh623 + 1 乐于助人

查看全部评分

发表于 2021-10-10 19:32:51 | 显示全部楼层
本帖最后由 zaqmlp 于 2021-10-11 16:21 编辑

  1. <# :
  2. rem www.tvmao.com
  3. rem 另存为ANSI编码的bat
  4. cls&echo off&cd /d "%~dp0"
  5. powershell -NoProfile -ExecutionPolicy bypass "[IO.File]::ReadAllText('%~f0',[Text.Encoding]::GetEncoding('GB2312'))|Invoke-Expression"
  6. pause
  7. exit
  8. #>

  9. $starturl=1;
  10. $minilen=160;
  11. $timeout=900;

  12. $infile='.\文本b.txt';
  13. $outfile='.\结果.txt';

  14. if(-not (test-path -liter $infile)){write-host ('"'+$infile+'" 未找到');exit;};

  15. $enc=[System.Text.Encoding]::UTF8;
  16. $webclient=New-Object System.Net.WebClient;
  17. function gethtml($u){
  18.     $t='';
  19.     for($j=1;$j -le 3;$j++){
  20.         try{
  21.             $webclient.Headers.Add('User-Agent','Mozilla/5.0 (Windows NT 6.1; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36');
  22.             $webclient.Encoding=$enc;
  23.             $t=$webclient.DownloadString($u);
  24.             break;
  25.         }catch{
  26.             write-host ('第'+$j.toString()+'次获取网页源码失败');
  27.             start-sleep -Seconds 3;
  28.         };
  29.     };
  30.     return $t;
  31. };

  32. function getcontent($u){
  33.         $content='';
  34.     $html2=gethtml $u;
  35.     $m3=[regex]::match($html2,'<article class="clear epi_c"[^>]*?>([\s\S]+?)</article>');
  36.     if($m3.Success){
  37.         $content=((($m3.groups[1].value -replace '<p>','') -replace '&nbsp;',' ') -replace '</p>',"`r`n") -replace '<div(?: [^>]*?)?>[\s\S]+?</div>','';
  38.         $content=(($content -replace '<[^>]+?>','') -replace '</?[a-z]+','').trim();
  39.     }
  40.     return $content;
  41. }

  42. $fs=New-Object System.IO.FileStream($outfile, [System.IO.FileMode]::Append);
  43. $sw=New-Object System.IO.StreamWriter($fs, $enc);
  44. $text=[IO.File]::ReadAllText($infile, $enc).split("`r`n",[StringSplitOptions]::RemoveEmptyEntries);
  45. for($i=0;$i -lt $text.Count;$i++){
  46.         if(($i+1) -ge $starturl){
  47.                 write-host ('--------------'+$text[$i]+'--------------');
  48.                 $result=New-Object -TypeName System.Collections.ArrayList;
  49.                 $url=$text[$i].trimend(' /')
  50.                 $url1=$url+'/episode';
  51.                 $html1=gethtml $url1;
  52.                 $title='TTT';
  53.                 $m1=[regex]::match($html1,'title="([^"]+?)剧情介绍".*?>介绍');
  54.                 if($m1.Success){$title=$title+$m1.groups[1].value.replace('剧情介绍','');}
  55.                 write-host $title;
  56.                 [void]$result.add($title);
  57.                 $m1=[regex]::match($html1,'<div class="epipage clear">([\s\S]+?)</div>');
  58.                 if($m1.Success){
  59.                         $m2=[regex]::matches($m1.groups[1].value, '<li(?: [^>]*?)?>.*?href="([^"]+?)"[^>]*?>(\d+)</a></li>');
  60.                         for($j=0;$j -lt $m2.Count;$j++){
  61.                                 [void]$result.add('第'+$m2[$j].groups[2].value+'集');
  62.                                 $url2=($url -replace '^(https?://[^/]+).+','$1')+$m2[$j].groups[1].value;
  63.                                 write-host ($m2[$j].groups[2].value+' '+$url2);
  64.                                 $t=0;
  65.                                 while(1){
  66.                                         $ct=getcontent $url2;
  67.                                         write-host $ct.length;
  68.                                         if($ct.length -gt $minilen){
  69.                                                 [void]$result.add($ct);
  70.                                                 break;
  71.                                         }else{
  72.                                                 $t++;
  73.                                         }
  74.                                         if($t -ge 3){
  75.                                                 $t=0;
  76.                                                 write-host ('字符数少于'+$minilen+',暂停'+$timeout+'秒……');
  77.                                                 start-sleep -Seconds $timeout;
  78.                                         }
  79.                                 }
  80.                         }
  81.                 }
  82.                 $s=$result -join "`r`n";
  83.                 $sw.WriteLine($s);
  84.                 $sw.WriteLine('');
  85.                 $sw.Flush();
  86.     }
  87. }
  88. $sw.Close();
  89. $fs.Close();
复制代码

评分

参与人数 1技术 +1 收起 理由
lxh623 + 1 感谢分享

查看全部评分

发表于 2021-10-10 19:53:39 | 显示全部楼层
tvzn.bat
  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. $list_file = 'c.txt'   #电视剧名称列表文件
  7. $out_file = 'info.txt' #输出信息文件

  8. #函数 获取所有分集链接
  9. function Get-PartList($url) {
  10.     $url += 'juqingjieshao.html'
  11.     $whr.Open('GET',$url,$false)
  12.     $whr.Send()
  13.     $txt = $whr.ResponseText
  14.     $whr.Abort()
  15.     $title = ''
  16.     if($txt -match '(?s)<title>(.*?)</title>'){
  17.         $title = $Matches[1] -replace '剧情介绍.*$',''
  18.     }
  19.     return &{
  20.         $title
  21.         [regex]::Matches($txt,'<a class="link" href="(.*?)">(.*?)</a>') | Sort-Object {[int]$_.Groups[2].Value} | foreach {
  22.             $_.Groups[2].Value + '|' + 'https://www.tvzn.com' + $_.Groups[1].Value
  23.         }
  24.     }
  25. }

  26. #函数 根据分集链接获取剧情内容
  27. function Get-PartInfo($part_list){
  28.     #标题
  29.     $title = $part_list[0]
  30.     Write-Host $title
  31.     'TTT' + $title
  32.     #分集
  33.     if($part_list.Count -gt 1){
  34.         for($i = 1; $i -lt $part_list.Count; $i++){
  35.             $arr = $part_list[$i] -split '\|'
  36.             Write-Host ('    第{0}集 {1}' -f $arr[0],$arr[1])
  37.             #---------------------------------
  38.             $url = $arr[1]
  39.             $whr.Open('GET',$url,$false)
  40.             $whr.Send()
  41.             $txt = $whr.ResponseText
  42.             $whr.Abort()
  43.             if($txt -match '(?s)<div class="tn-detail-text".*?</p>'){
  44.                 '第{0}集' -f $arr[0]
  45.                 $Matches[0] -replace '<.*?>|&nbsp;|\s+',''
  46.             }
  47.         }
  48.     }
  49. }

  50. #读取文本内容并解析
  51. Get-Content $list_file | foreach {
  52.     $part_list = Get-PartList -url $_
  53.     $data = Get-PartInfo -part_list $part_list
  54.     Out-File -InputObject $data $out_file -Append
  55. }

复制代码

评分

参与人数 1技术 +1 收起 理由
lxh623 + 1 乐于助人

查看全部评分

 楼主| 发表于 2021-10-11 07:51:14 | 显示全部楼层
回复 3# zaqmlp
电视猫
信息不全,后面总是少了。麻烦检查一下。
谢谢!
发表于 2021-10-11 11:09:35 | 显示全部楼层
tvmao.bat
  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-PartUrlList($url){
  13.     if($url -eq $null){
  14.         return $null
  15.     }
  16.     $whr.Open('GET',$url,$false)
  17.     Set-RequestHeader -whr $whr
  18.     $whr.Send()
  19.     $txt = $whr.ResponseText
  20.     $whr.Abort()
  21.     $title = ''
  22.     $pattern = '<strong class="font24">(.*?)</strong>'
  23.     if($txt -match $pattern){
  24.         $title = $Matches[1]
  25.     }
  26.     $pattern = '<div class="epipage.*?>.*?</div>'
  27.     if($txt -match $pattern){
  28.         $pattern = '(?s)href="(.*?)"'
  29.         return &{
  30.             $title
  31.             [regex]::Matches($Matches[0],$pattern) | foreach {
  32.                 'https://www.tvmao.com' + $_.Groups[1].Value
  33.             }
  34.         }
  35.     }
  36.     return $null
  37. }

  38. #函数 根据分集url获取分集剧情
  39. function Get-PartInfo($part_url){
  40.     if($part_url -match '-(\d+)$'){
  41.         Write-Host ('解析第{0}集 {1}' -f $Matches[1],$part_url)
  42.         '第{0}集' -f $Matches[1]
  43.     } else {
  44.                 return;
  45.         }
  46.     $whr.Open('GET',$part_url,$false)
  47.     Set-RequestHeader -whr $whr
  48.     $whr.Send()
  49.     $txt = $whr.ResponseText
  50.     $whr.Abort()
  51.     $pattern = '(?s)<article class=".*?epi_c">.*?</article>'
  52.     if($txt -match $pattern){
  53.         $Matches[0] -replace '(?s)<.*?>','' -replace '(?s)\(.*?转载许可\).*$','' -replace '^\s+|\s+$',''
  54.     }
  55. }

  56. #--------------------------------------------------------------------
  57. #变量设置
  58. $list_file = 'd.txt'         #列表文件
  59. $out_file = 'tvmao_info.txt' #输出信息文件
  60. #--------------------------------------------------------------------

  61. Get-Content $list_file | foreach {
  62.     $part_list = Get-PartUrlList -url ($_ + '/episode')
  63.     Write-Host $part_list[0]
  64.     if($part_list.Count -gt 1){
  65.         $data = &{
  66.             'TTT' + $part_list[0]
  67.             for($i = 1;$i -lt $part_list.Count; $i++){
  68.                 Get-PartInfo -part_url $part_list[$i]
  69.             }
  70.         }
  71.         Out-File -InputObject $data $out_file -Append
  72.     }
  73.     Write-Host '----------------'
  74. }
复制代码

评分

参与人数 1技术 +1 收起 理由
lxh623 + 1 乐于助人

查看全部评分

发表于 2021-10-11 16:23:33 | 显示全部楼层
回复 5# lxh623

已修改
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:38 , Processed in 0.024387 second(s), 10 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表