[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

【完结】求网页信息抓取+150元

本帖最后由 lxh623 于 2021-10-10 17:40 编辑

两个网站。各150元。
第一,https://www.km.com/tv/---.html
全部电视剧。名称前面加TTT。
图片地址
【概览】(添加文字)
剧情介绍之前的内容。包括导演、得分等七八项。剧情最后要展开。这里的演员表不要,因为下面有。
【分集剧情】
【演员表】每一个演员人名加ZZZ。
【人物介绍】
【幕后信息】左右栏目,麻烦转行。
第二、https://www.tvsou.com/class/dianshiju/
全部电视剧。名称前面加TTT。
图片地址
【概览】(添加文字)
这里的演员表不要,因为下面有。
【分集剧情】
剧情介绍+分集剧情
【演员表】每一个演员人名加ZZZ。

也可以我事先得到所有电视剧链接。按照文本去打开。

不知道会不会拦截,但愿没有。
我不会用于建网。

谢谢!

回复 22# went
新帖子。

TOP

回复 21# lxh623


    点头像加我微信私聊

TOP

回复 15# went
能不能做一个根据链接提取分集剧情的。因为有些搜索结果是多个。50元。
谢谢!

TOP

回复 19# lxh623
这个我简单修改原来的批处理,居然完成。
谢谢!

TOP

本帖最后由 lxh623 于 2021-10-8 09:59 编辑

11楼的代码,我下载了35000左右。
但是,还是不全,因为目录抓取不全。
如果文本输入构造的剩余网址65000,希望得到:网址+TTT标题。(网站自己有重复,同一个名字对应两个网址。另一方面,可能构造网址对应无效。)

这样,可以与35000对比,没有的标题对应的网址,再来抓取。
50元。
谢谢!

TOP

回复 17# went


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

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

本帖最后由 lxh623 于 2021-10-7 10:24 编辑

补充批处理。100元。
文本c,写入名字,一行一个。(与文本b一样)
https://www.tvmao.com/搜索,得到链接,打开,获取人物关系图。没有就算了。

格式
TTT凤弈YYY人物关系图:http://XXXXXXXXXX.png
有些png后面有东西。就是整个链接。比如,guanxitu/L74pL7=rL-.png?1


谢谢!

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

麻烦做一下补充批处理。50元。
文本b,写入名字,一行一个。到https://www.tvmao.com/搜索,得到链接,打开,获取分集剧情。
格式
TTT
第1集
........
第2集
.......


谢谢!

TOP

回复 12# lxh623


    加上了

TOP

本帖最后由 lxh623 于 2021-10-4 18:32 编辑

回复 11# went
麻烦增加【人物介绍】几个字。
麻烦查收。

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

回复 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

返回列表