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

[文本处理] 如何提取网页中指定的网址,实现短网址直达功能,求批处理

[复制链接]
发表于 2017-12-2 10:52:20 | 显示全部楼层 |阅读模式
求批处理,谢谢:
发现个新问题,这个转址居然用wget.exe下不下来,举例网址 dd.ma/mE0NUHSi
网页源码见附件,提取网址(网址任意的)并打开如下图红色部分所示,注意,网址并不固定不限是如下百度的(如其它任意形式的网址),但都是这个形式而已:
发表于 2017-12-2 11:36:49 | 显示全部楼层
回复 1# 447219071
  1. # -*- coding:utf-8 -*-
  2. # 需下载Python 3.5, bs4
  3. # pip -install bs4


  4. import bs4, os
  5. import urllib.request as url

  6. try:
  7.     #文件路径
  8.     file = "file:///D:/robot/desk/Script/a.txt"
  9.     req = url.urlopen(file)
  10.     soup = bs4.BeautifulSoup(req,'html.parser')
  11.     for i in soup.find_all('a'):
  12.         if i.string == '点击打开' or i.string == '点击这里进入':
  13.             Url = url.unquote(i.get('href'))
  14.             print("%s:      %s" % (i.string,Url))
  15.             os.system("start %s" % Url)
  16. except:
  17.         print("文件不能读取")
  18.         pass
  19. input("回车结束")
复制代码
发表于 2017-12-2 11:47:31 | 显示全部楼层
本帖最后由 lifei259 于 2017-12-4 13:38 编辑
  1. @echo off
  2. for /f "tokens=9 delims=^=^> " %%a in ('type,a.txt^|find "href="') do set "a=%%a"
  3. start "" %a%ping 127.1 -n 10
  4. pause
复制代码

我更新了 你可以试试,等十秒打开一个窗口。
 楼主| 发表于 2017-12-2 14:47:20 | 显示全部楼层
回复 2# ivor 是求批处理,谢谢
 楼主| 发表于 2017-12-2 14:48:47 | 显示全部楼层
回复 3# lifei259
这是要打开的还原地址没错,但是其它网页代码也与此类似,但要得到的网址并不一定是百度的
发表于 2017-12-2 19:39:14 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. set "str1=http:"
  3. set "str2=""
  4. (for /f "delims=" %%a in ('findstr "!str1!.*!str2!" "A.txt"') do (
  5.             set "str=#%%a"
  6.         set "str=!str:%str1%=$!"
  7.         for /f "tokens=2 delims=$" %%i in ("!str!") do set "str=%str1%%%i"
  8.         set "str=!str:%str2%=*!"
  9.         for /f "tokens=1 delims=*" %%j in ("!str!") do echo;%%j
  10. ))>temp.txt
  11. pause
复制代码
获取所有HTTP开头的网址,没有对重复网址进行甄别。
发表于 2017-12-3 01:06:10 | 显示全部楼层
python3 + selenium + chrome浏览器
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Sun Dec  3 00:40:35 2017
  4. @author: codegay
  5. python3 & 编辑器 == spyder
  6. """

  7. from time import sleep
  8. from selenium import webdriver
  9. # appdata = environ["LOCALAPPDATA"] + r"\Google\Chrome\User Data"
  10. appdata = "c:/chrome-selenium"
  11. options = webdriver.ChromeOptions()

  12. options.add_argument("user-data-dir=" + appdata)
  13. # options.add_argument("headless")
  14. options.add_argument("disable-gpu")

  15. ddurl = "http://dd.ma/mE0NUHSi"

  16. chrome = webdriver.Chrome(chrome_options=options)
  17. chrome.get(ddurl)
  18. sleep(10)
  19. try:
  20.     geturl = chrome.find_element_by_link_text("点击这里进入")
  21. except:
  22.     print("异常错误或者找不到元素")
  23.     exit()

  24. url = geturl.get_property("href")

  25. print("url:", url)

  26. chrome.get(url)
复制代码
发表于 2017-12-3 07:47:26 | 显示全部楼层
优化了一下。通过id和tag定位,这样不用等待JS的那个倒计时。
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Sun Dec  3 00:40:35 2017
  4. @author: codegay
  5. python3 & 编辑器 == spyder
  6. """

  7. from time import sleep
  8. from selenium import webdriver
  9. # appdata = environ["LOCALAPPDATA"] + r"\Google\Chrome\User Data"
  10. appdata = "c:/chrome-selenium"
  11. options = webdriver.ChromeOptions()

  12. options.add_argument("user-data-dir=" + appdata)
  13. # options.add_argument("headless")
  14. # options.add_argument("disable-gpu")

  15. ddurl = "http://dd.ma/mE0NUHSi"

  16. chrome = webdriver.Chrome(chrome_options=options)
  17. chrome.get(ddurl)
  18. sleep(1)
  19. try:
  20.     geturl = chrome.find_element_by_id("btn_open")
  21.     geturl = geturl.find_element_by_tag_name("a")
  22. except Exception as e:
  23.     print("异常错误或者找不到元素:")
  24.     print(e)
  25.     exit()

  26. url = geturl.get_property("href")

  27. print("url:", url)

  28. chrome.get(url)
复制代码
 楼主| 发表于 2017-12-4 08:16:55 | 显示全部楼层
回复 8# codegay


    可能我使用的是WINDOWS系统的原因,生成批处理运行后没有反应!谢谢费心
 楼主| 发表于 2017-12-4 08:21:07 | 显示全部楼层
回复 3# lifei259


    恩,试了可以用!另一个像我更新后的问题,用WGET下不了这个转址的源码,因为下这个转短的源码要等展示5秒钟后才会出现真正的源码,请问怎么弄法,谢谢高手!
发表于 2017-12-6 02:22:30 | 显示全部楼层
本帖最后由 codegay 于 2017-12-6 02:23 编辑

nim语言写的
  1. import httpclient
  2. import re
  3. import os

  4. proc getlink*(url:string):string {.discardable.} =
  5.     var client = newHttpClient()
  6.     var link: array[1,string]
  7.     var ddmaContent:string
  8.     ddmaContent = client.getContent(url)
  9.     client.close()

  10.     if find(ddmaContent,re"""link1"\s+href="(.+)"""",link,1) != -1 :
  11.         echo "link:",link[0]
  12.         result = link[0]
  13.     else:
  14.         result = ""

  15. proc startlink*(url:string):int {.discardable.} =
  16.     result = execShellCmd("start " & url)

  17. startlink(getlink("http://dd.ma/mE0NUHSi"))
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 04:29 , Processed in 0.020445 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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