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

[文本处理] [已解决]批处理如何实现下载三七中文网某个指定小说的最新章节?

本帖最后由 pcl_test 于 2016-11-30 18:51 编辑

我是新手,前几天刚接触wget和HtoX32c,于是想写一个自动下载小说最新章节的批处理
思路是用wget下载某个网页的源码,从中找出最新章节的地址,再用wget下载,最后HtoX32c转换

比如说看《大主宰》,可以用wget下载这个网页的源码http://www.37zw.com/0/330/,这个网址是不变的,保存为1.html
1.html中的一行:<meta property="og:novel:latest_chapter_url" content="http://www.37zw.com/0/330/4329753.html"/>,其中的http.....43297553.html就是最新章节的地址
其他方面都成功了,但是不知道怎么获取这个最新章节的地址,1.html中不止这一个链接地址
或者有更好的方法也请教教我
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 happy886rr 于 2016-12-1 20:26 编辑

回复 16# 小小菜鸟
你是指没有回车符或缩进的html吗?一样的,我的代码之前测试过,没缩进照样提取,它是按双引号来的。最多用个
  1. if not "!str:子串=!"=="!str!"
复制代码
即可判别是否含有子串。

TOP

回复 6# happy886rr


    我想问一下,如果是没有格式化的html怎么提取呢。

TOP

回复 14# pcl_test


    哦哦

TOP

回复 13# Blitz


    重定向到文本即可

TOP

本帖最后由 Blitz 于 2016-12-1 00:59 编辑

回复 12# pcl_test

谢谢,代码很简短,而且效果也很好,但是弹出的消息框好像不能下滑,看不了下面的内容

TOP

  1. mshta http://bathome.net/s/hta/index.html "var url=web('http://www.37zw.com/0/330/').match(/<meta.+?latest_chapter_url.+?\""([^""]+)/)[1];web(url).match(/<div id=\""content\"">[\s\S]+?<\/div>/)[0].replace(/<br ?\/>/g,'\r\n').replace(/&nbsp;/g,' ').replace(/<[^<]*?>/g,'')"
  2. pause
复制代码
1

评分人数

TOP

回复 10# happy886rr


    哦哦,谢谢

TOP

本帖最后由 happy886rr 于 2016-11-29 23:05 编辑

回复 9# Blitz
就我那条,改改中括号里的内容,连重命名都能一行实现,那是批处理实现的选择器,几乎可以筛选绝大多数网页内容。

TOP

回复 8# happy886rr


    其实主要的代码就是这几句
  1. cd C:\Users\Administrator\Desktop
  2. wget -O 1.txt %as%
  3. HtoX32c /IP 1.txt>2.txt
  4. del 1.txt
复制代码
后面的是从网上找的,获取文件的第18行重命名文件
请问该怎么改

TOP

回复 7# Blitz
你的代码太臃肿,连下载转码其实3行就能搞定。

TOP

回复 6# happy886rr


    试了,成功了,非常感谢!!!

TOP

好在meta标签比较靠前,要不还真能把for累死~!
  1. @echo off&for /f tokens^=1-4^ delims^=^" %%a in (1.html) do (if [%%b]==[og:novel:latest_chapter_url] (set/p=%%d&exit))
复制代码
2

评分人数

TOP

本帖最后由 Blitz 于 2016-11-29 22:30 编辑

回复 3# CommandBatCmd
  1. @echo off
  2. set /p as=请输入网址:
  3. cd C:\Users\Administrator\Desktop
  4. wget -O 1.txt %as%
  5. HtoX32c /IP 1.txt>2.txt
  6. del 1.txt
  7. setlocal Enabledelayedexpansion  //从这里往下是从网上找的,作用是取章节的标题作为文件名
  8. call :G_getrowstr 18 2.txt kk
  9. ren 2.txt "%kk%.txt"
  10. exit
  11. :G_getrowstr
  12. set %3=
  13. set /A G_skiprows=%1-1
  14. if "%G_skiprows%"=="0" goto :G_getrowstrz
  15. for /f "skip=%G_skiprows% delims=" %%i in ('findstr /n .* %2') do (  
  16. for /f "tokens=2* delims=:" %%j in ("%%i") do set %3=%%j
  17. ::if "%%i"=="%1:" set %3=空白行
  18. goto :eof
  19. )
  20. :G_getrowstrz
  21. for /f "delims=" %%i in ('findstr /n .* %2') do (
  22. for /f "tokens=2* delims=:" %%j in ("%%i") do set %3=%%j
  23. goto :eof
  24. )
复制代码
这就是要输入最新章节的地址才行

TOP

本帖最后由 Blitz 于 2016-11-29 22:28 编辑

回复 2# pcl_test


    谢谢,但是还是不太懂。。。能详细点吗

TOP

返回列表