[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程批处理在线视频分享
返回列表 发帖

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

本帖最后由 447219071 于 2017-12-2 20:33 编辑

求批处理,谢谢:
发现个新问题,这个转址居然用wget.exe下不下来,举例网址 dd.ma/mE0NUHSi
网页源码见附件,提取网址(网址任意的)并打开如下图红色部分所示,注意,网址并不固定不限是如下百度的(如其它任意形式的网址),但都是这个形式而已:

附件: 您需要登录才可以下载或查看附件。没有帐号?注册

回复 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("回车结束")
复制代码

TOP

本帖最后由 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
复制代码

我更新了 你可以试试,等十秒打开一个窗口。
智慧是,利用最简单的代码替代复杂事情的处理过程。

TOP

回复 2# ivor 是求批处理,谢谢

TOP

回复 3# lifei259
这是要打开的还原地址没错,但是其它网页代码也与此类似,但要得到的网址并不一定是百度的

TOP

  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开头的网址,没有对重复网址进行甄别。

TOP

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)
复制代码
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

优化了一下。通过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)
复制代码
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 8# codegay


    可能我使用的是WINDOWS系统的原因,生成批处理运行后没有反应!谢谢费心

TOP

回复 3# lifei259


    恩,试了可以用!另一个像我更新后的问题,用WGET下不了这个转址的源码,因为下这个转短的源码要等展示5秒钟后才会出现真正的源码,请问怎么弄法,谢谢高手!

TOP

本帖最后由 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"))
复制代码
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

返回列表