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

[网络连接] [已解决]批处理如何批量下载百度搜索结果中的每条链接指向的网页?

本帖最后由 pcl_test 于 2016-9-4 13:37 编辑

我想把下面网页的链接网页的内容分别下载到各自的文本文件里面。请大侠帮忙!
主要是方法。谢谢!
第一,如果一步就更好了。以文章名命名的614个文本。
第二,分步骤。先是下载html。我获得了614个地址,都不会下载。因为涉及到打开网页、再转接。比如,
http://www.baidu.com/link?url=-- ... 9ehPhagSu1agKSnekya
然后,转换为文本。[这一步,论坛有个软件HtoX32c,好像可以用。]
再修改文本(提取中间的文章内容),最后,还要命名。
就是在百度https://www.baidu.com/ 搜索,title: (管理) sitewww.fjdh.cn)
抱歉,粘贴网址总是不行。
https://www.baidu.com/s?ie=utf-8 ... 7%90%86)%20site%3A()&rsv_pq=92b4ae0300000efa&rsv_t=e0071a9cFmVCoLRcSG3%2FEIvqaWUkaOSPqjCn8ujzlqSv8xLeFP%2BOi3th7A9c0Jc&rsv_enter=0&rsv_sug3=2&rsv_sug1=1&inputT=2893&rsv_sug4=5176[/url]
1

评分人数

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

就是下载百度搜索结果里的各个页面?

TOP

试着用下 teleport ultra 和 jsdom

TOP

就是下载百度搜索结果里的各个页面?
bailong360 发表于 2015-6-10 18:57

是的.谢谢!

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. wget -O tmp "http://www.baidu.com/s?wd=title:管理 site:www.fjdh.cn"
  4. cscript //nologo .\UTF-8.vbs tmp
  5. >url grep -oP "(?<=\"url\":\")..*?(?=\")" tmp_ansi
  6. >title grep -oP "(?<=title\":\")..*?(?=\")" tmp_ansi
  7. (for /f "delims=" %%i in (title) do (
  8.   set title=%%i
  9.   echo !title::=:!))>title2
  10. (for /f "delims=" %%i in ('findstr . url') do (
  11.   set title=
  12.   set /p title=
  13.   wget -O !title!.html "%%i"
  14. ))<title2
  15. del tmp,tmp_ansi,url,title,title2
  16. pause
复制代码
符合要求否?
第三方见签名
1

评分人数

TOP

已经解决第一步,我是用了老的flashget。可以下载。第二步,也如上解决。
新的问题,就成了,怎样提取特征字符串之间的文本,并且把文件以最前面一行命名。614个文件,批量操作。
字符串是“>>正文内容”和“没有相关内容”。
谢谢!

TOP

符合要求否?
第三方见签名
bailong360 发表于 2015-6-10 21:32

谢谢!
wget是不是需要下载?

TOP

回复 7# lxh623
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b *.txt') do (
  4. (for /f "delims=" %%j in (%%~si) do (
  5. if "%%j"=="没有相关内容" set start=1
  6. if "!start!"=="0" echo;%%j
  7. if "%%j"==">>正文内容" set start=0
  8. ))>"New_%%~nxi"
  9. )
复制代码
是的,签名档中给出了下载地址

TOP

回复  lxh623 是的,签名档中给出了下载地址
bailong360 发表于 2015-6-10 22:08

谢谢!
我没有看到wget。您帮我看看?

TOP

回复 9# lxh623
直接输入wget.exe

TOP

cscript //nologo .\UTF-8.vbs
在哪里?
谢谢!

TOP

本帖最后由 apang 于 2015-6-13 14:01 编辑

保存为test.bat,需要先下载HtoX32c.exe与批处理放在一起,处理后的txt为ansi编码
  1. @set @n=0;/* & echo off
  2. md Result 2>nul
  3. pushd Result\
  4. cscript -nologo -e:jscript "%~0"
  5. "%~dp0HtoX32c" /IP /O0 *.html 2>nul
  6. del *.html
  7. pause & exit/b & rem */
  8. var url = "http://www.baidu.com/s?wd=title:管理 site:www.fjdh.cn&pn=";
  9. var intTotal = 0;
  10. var re = /"title":"(.+?)","url":"(.+?)"/ig;
  11. //获取百度搜索结果中第1~61页的标题、地址,以标题名称作为html文件名
  12. for(var i=0; i<61; i++){
  13.         var http = new ActiveXObject("MSXML2.ServerXMLHTTP");
  14.         try {
  15.                 http.open("GET", url + i*10, false);
  16.                 http.send();
  17.                 var s = GetText(http.responseBody);
  18.                 while((arr = re.exec(s)) != null){
  19.                         http.open("GET", arr[2], false);
  20.                         http.send();
  21.                         SaveFile(http.responseBody, arr[1]);
  22.                 }
  23.         } catch(e) {WScript.Echo(e.message)}
  24.         http = null;
  25. }
  26. function GetText(bin){
  27.         with(new ActiveXObject("ADODB.Stream")){
  28.                 Mode = 3;
  29.                 Type = 1;
  30.                 Open();
  31.                 Write(bin);
  32.                 Position = 0;
  33.                 Type = 2;
  34.                 CharSet = "UTF-8";
  35.                 return ReadText()
  36.         }
  37. }
  38. //下载、保存html文件
  39. function SaveFile(bin, strName){
  40.         strName = strName.replace(/[\/\|\\:<>\?\*]/g, ""); //格式化文件名
  41.         var fso = new ActiveXObject("Scripting.FileSystemObject");
  42.         if(fso.FileExists(strName + ".html")) {return ""} else intTotal+=1;
  43.         WScript.Echo((intTotal+1000+"").substr(1) + " " + strName + ".html");
  44.         with(new ActiveXObject("ADODB.Stream")){
  45.                 Mode = 3;
  46.                 Type = 1;
  47.                 Open();
  48.                 Write(bin);
  49.                 Position = 0;
  50.                 Type = 2;
  51.                 CharSet = "UTF-8";
  52.                 //保留“正文内容”到“标签:”之间的内容
  53.                 var txt = ReadText().replace(/[\s\S]+>正文内容<.*\n/, "").split(">标签:<")[0];
  54.                 txt = txt.replace(/&[a-z]+;/g, ""); //删除导致乱码的字符
  55.                 Position = 0;
  56.                 CharSet = "GBK";
  57.                 WriteText(txt);
  58.                 SetEOS;
  59.                 SaveToFile(strName + ".html", 2);
  60.         }
  61. }
复制代码
1

评分人数

TOP

保存为test.bat,需要先下载HtoX32c.exe与批处理放在一起,处理后的txt为ansi编码
apang 发表于 2015-6-13 00:07

怎样一次获得614个?或者别的搜索的全部结果。
谢谢!

TOP

回复 13# lxh623


    已修改
试了下,百度搜索结果最多61页,每页10个html文件,去掉重复后结果为580个
1

评分人数

    • lxh623: 真心感谢!技术 + 1

TOP

本帖最后由 lxh623 于 2015-6-14 11:10 编辑

回复 14# apang
有些没有下载到,不知道是为什么。比如:
从玄奘取经看唐代的出入境管理制度(还是最好在百度搜索,再打开。)
四川省人民代表大会常务委员会关于修改《四川省宗教事务管理条例》的决定
国家宗教事务局令第9号 《关于修订中华人民共和国境内外国人宗教活动管理规定实施细则的决定》
寺院品牌战略管理刍议

我自己用firefox插件outwit分析链接,手动保留含有“link?url=”的,然后用快车下载的。见下面。

http://pan.baidu.com/s/1sj80425

谢谢!

TOP

返回列表