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

[其他] 批处理如何批量复制网页上的全部数据?

本帖最后由 wh1234567 于 2012-7-27 15:45 编辑

http://51sh.cc
想用批处理快速复制这个网站上的全部手机号码段数据到1个文本里,方便本地批处理查询,
想复制的是全部手机号段数据包括归属地等信息,而不是手机号码

回复 1# wh1234567


bat,把源代码保存为1.txt,然后用这个批处理,我只帮你筛了11位的手机号
  1. @echo off
  2. setlocal enableDelayedExpansion
  3. for /f "tokens=*" %%i in ('findstr "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"
  4. 1.txt') do (
  5. for %%j in ("%%i") do (
  6. set str=%%j&set str=!str:~0,11!
  7. if not "!str!"=="code&sky" echo !str!>>2.txt
  8. )
  9. )
复制代码
这是vbs,也是筛选11为手机号,但不能筛出重复的手机号
  1. option explicit
  2. dim a, b, c, d, e, e1
  3. set a = createobject("scripting.filesystemobject")
  4. set b = a.opentextfile("1.txt")
  5. set c = func1(b.readall)
  6. for each d in c
  7. e = e & d.value & vbnewline
  8. next
  9. sub1 e
  10. function func1(str)
  11. dim aa, bb
  12. set aa = new regexp
  13. aa.pattern = "\d{11}"
  14. aa.global = true
  15. set func1 = aa.execute(str)
  16. end function
  17. sub sub1(str)
  18. dim aaa, bbb
  19. set aaa = createobject("scripting.filesystemobject")
  20. set bbb = aaa.createtextfile("2.txt")
  21. bbb.write str
  22. end sub
复制代码

TOP

回复 2# poter
感谢您的回答,我想复制的是全部手机号段数据包括归属地等信息,而不是手机号码

TOP

回复 3# wh1234567


    更新到顶楼吧,亲。

TOP

本帖最后由 wh1234567 于 2012-8-1 18:03 编辑

请求版主及高手们,帮帮忙吧,用bat或vbs,都行,只要能办到的都行,或者是利用第三方命令行程序

TOP

看了一下,这个并不难!~
使用wget下载页面即可用for来分析,然后抓取以下内容后面的号码分TXT输出即可:
  1. <td width="70px" ><a href="index.php?type=code&sky=1300069" >1300069</a></td>
  2. <td width="60px" ><a href="index.php?type=province&sky=guangxi" >广东</a></td>
  3. <td width="70px" ><a href="index.php?type=pcity&sky=nanning" >广州</a></td>
  4. <td width="100px" >广州联通130卡</td>
  5. <td width="40px" >020</td>
  6. <td width="60px" >510000</td>
复制代码
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

回复 6# cjiabing

代码不全吧,能不能弄成完整代码,谢谢斑竹

TOP

回复 7# wh1234567


    给你提供了思路,解决问题要靠自己动脑筋~
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

你的思路不对,想获取的是,点击号码段进去复制下拉框里面的全部内容

TOP

回复 9# wh1234567


    既然你说不对那我就不说了!
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

发一个半成品,需要三方wget,且结果需要进一步处理。
  1. @echo off&setlocal EnableDelayedExpansion&title 获取手机号码段
  2. if not exist UTF82ANSI.vbs cd.>UTF82ANSI.vbs&for /f "skip=5 tokens=1* delims=:" %%a in ('findstr /n .* %0') do if %%a lss 72 echo;%%b>>UTF82ANSI.vbs
  3. ::创建UFT-8转ANSI工具UTF82ANSI.vbs。注意生成编码的代码在第4以后,请修改行数+5
  4. echo 请将wegt与本程序置于同一目录后开始!&pause&goto start
  5. ' *============================================================================*
  6. ' * 批量编码转换包括GB2312,UTF-8,Unicode,支持拖动,可扩展到右菜单(发送到) *
  7. ' * CodeChange.vbs     BY: yongfa365 http://www.yongfa365.com       2007-10-04 *
  8. ' * UTF82ANSI.vbs   BY: fastslz   http://bbs.cn-dos.net          2007-12-03 *
  9. ' *============================================================================*
  10. aCode = "UTF-8"
  11. bCode = "GB2312"
  12. Set objArgs = WScript.Arguments
  13. If objArgs.Count=0 Then
  14.     MsgBox "本脚本仅支持"&aCode&"到"&bCode&"的转换,请将您要转换的文件拖到这个文件上!    "&vbCrLf&"命令行用法:UTF82ANSI.vbs [驱动器][目录][文件名1][文件名2]...", vbInformation, "拖拽批量编码转换工具 BY: fastslz"
  15. End If
  16.     For I = 0 To objArgs.Count - 1
  17.         FileUrl = objArgs(I)
  18.         Call CheckCode (FileUrl)
  19.         Call WriteToFile(FileUrl, ReadFile(FileUrl, aCode), bCode)
  20.     Next
  21. Function ReadFile(FileUrl, CharSet)
  22.     Dim Str
  23.     Set stm = CreateObject("Adodb.Stream")
  24.     stm.Type = 2
  25.     stm.mode = 3
  26.     stm.charset = CharSet
  27.     stm.Open
  28.     stm.loadfromfile FileUrl
  29.     Str = stm.readtext
  30.     stm.Close
  31.     Set stm = Nothing
  32.     ReadFile = Str
  33. End Function
  34. Function WriteToFile (FileUrl, Str, CharSet)
  35.     Set stm = CreateObject("Adodb.Stream")
  36.     stm.Type = 2
  37.     stm.mode = 3
  38.     stm.charset = CharSet
  39.     stm.Open
  40.     stm.WriteText Str
  41.     stm.SaveToFile FileUrl, 2
  42.     stm.flush
  43.     stm.Close
  44.     Set stm = Nothing
  45. End Function
  46. Function CheckCode (FileUrl)
  47.     Dim slz
  48.     set slz = CreateObject("Adodb.Stream")
  49.     slz.Type = 1
  50.     slz.Mode = 3
  51.     slz.Open
  52.     slz.Position = 0
  53.     slz.Loadfromfile FileUrl
  54.     Bin=slz.read(2)
  55.     if AscB(MidB(Bin,1,1))=&HEF and AscB(MidB(Bin,2,1))=&HBB Then
  56.        Codes="UTF-8"
  57.        elseif AscB(MidB(Bin,1,1))=&HFF and AscB(MidB(Bin,2,1))=&HFE Then
  58.               Codes="Unicode"
  59.               else
  60.               Codes="GB2312"
  61.     end if
  62.     if not aCode = Codes Then
  63.            MsgBox "待处理文件 “"&FileUrl&"”"&vbCrLf&"该文件原始编码不是"&aCode&",本脚本仅支持"&aCode&"到"&bCode&"的转换!    ",vbInformation,"错误终止"
  64.            WScript.Quit
  65.     end if
  66.     slz.Close
  67.     set slz = Nothing
  68. End Function
  69. :start
  70. echo 开始执行 . . .
  71. set mnum=
  72. for %%a in (134   135) do (
  73.     for /l %%i in (0,1,9) do (
  74.         echo 下载号码段:%%a%%i
  75.         set mnum=%%a%%i
  76.         if not exist !mnum!.txt (
  77.             wget -q "http://51sh.cc/index.php?type=code&sky=%%a%%i" -O %%a%%i.tmp
  78.             call :UTA
  79.         )
  80. pause&rem 此处用于流程控制,可去掉!
  81.     )
  82. )
  83. ::号码段134   135  136   137 ……需要自己补充完整
  84. pause
  85. exit
  86. :UTA
  87. >"%temp%\dbg.tmp" (
  88.     echo F100,102 EF BB BF
  89.     echo RCX
  90.     echo 3
  91.     echo N %temp%\head.tmp
  92.     echo W
  93.     echo Q
  94. )
  95. debug<"%temp%\dbg.tmp" >nul
  96. chcp 936 >nul
  97. copy /b %temp%\head.tmp + /b !mnum!.tmp %temp%\head1.tmp >nul
  98. copy /b %temp%\head1.tmp !mnum!.txt >nul
  99. UTF82ANSI.vbs !mnum!.txt
  100. echo ------------------耐心等待----------------------
  101. cd.>OK_!mnum!.txt
  102. set sp=
  103. for /f "tokens=1,7-9 delims==><: " %%a in ('findstr /i /n "code province pcity" !mnum!.txt') do (
  104.     echo %%a %%b %%c
  105. )>>OK_!mnum!.txt
  106. ::注意转换结果需要进一步调整
  107. echo ------------------转换完成----------------------
  108. goto :eof
  109. 以下备用参考:
  110. 中国移动手机号码段及号码
  111. 移动134号段: 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349
  112. 移动135号段: 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359
  113. 移动136号段: 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369
  114. 移动137号段: 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379
  115. 移动138号段: 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389
  116. 移动139号段: 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399
  117. 移动150号段: 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509
  118. 移动151号段: 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519
  119. 移动152号段: 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529
  120. 移动157号段: 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579
  121. 移动158号段: 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589
  122. 移动159号段: 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599
  123. 移动182号段: 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829
  124. 移动187号段: 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879
  125. 移动188号段: 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889
  126. 中国联通手机号码段及号码
  127. 联通130号段: 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309
  128. 联通131号段: 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319
  129. 联通132号段: 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329
  130. 联通155号段: 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559
  131. 联通156号段: 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569
  132. 联通186号段: 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869
  133. 中国电信手机号码段及号码
  134. 电信133号段: 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339
  135. 电信153号段: 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539
  136. 电信189号段: 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899
  137. 电信180号段: 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809
复制代码
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

回复 11# cjiabing

TOP

返回列表