本人Python新入门小白,由于最近项目需要,需要使用Edge去获取一些网页信息,为啥一定要用Edge而不用大家普遍使用的Chrome去弄是因为公司系统环境所决定,没办法,只能研究Edge。不过查了好多网上资料,没有一篇是比较全面能一次性解决问题的,要么就是没有解释清楚关键部分,导致代码报错。经过几天的综合测试研究下来,终于完成了一些功能。
设备环境
windows10+python3.8+Anaconda(由于公司电脑,只能支持此软件,由于平常都用pycharm,用不太习惯Anaconda,研究了一段时间)+Edge
功能描述
获取网页内的信息,此处用获取网页内某超链接地址作为举例
准备工作
1.安装相应python包,此处用到selenium, msedge.selenium_tools(使用pip命令安装,会python的都会吧…,建议使用国内镜像安装,速度快点)
2.下载Edge webdriver,这个网上很容易找到怎么下载,这边就不复述了
代码
from selenium import webdriver #导入网页控制器
import selenium.webdriver.edge.options #导入edge的选项控制器
#导入msedge的功能,就是此处研究了很久,很多文章都提到要用EdgeOptions,但文章内并没有导入此类关键信息的提醒
from msedge.selenium_tools import Edge, EdgeOptions
from selenium.webdriver.common.by import By #用于定位class元素
from selenium.webdriver.support.ui import WebDriverWait #等待
from selenium.webdriver.support import expected_conditions as EC #执行条件
#import datetime #用来计算程序运行时间,测试完就隐藏起来了
#st=datetime.datetime.now() #获取程序运行的起始时间
def GetUrl():
edge_options = EdgeOptions()
edge_options.use_chromium = True #初始化Edge
edge_options.headless = True #静默运行,网页不显示
#公司电脑,没权限在python安装目录里存放webdriver,就自己个儿建立个夹子放,所以在调用的时候,要引用到那个存放目录上
driver=Edge(executable_path="C:\Python\edgedriver_win64\msedgedriver.exe",options=edge_options)
driver.get('链接地址')
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//a[contains(.,'关键字')]")) #获取带有a标签的inntertext中的关键字,并给与网页最大10秒的加载时间
)
urls=driver.find_elements_by_xpath("//a[contains(.,'关键字')]") #找到此关键字所在a标签
for url in urls:
return(url.get_attribute("href")) #获取其中所有超链接地址
finally:
driver.quit()
if __name__=='__main__':
print(GetUrl())
#ed=datetime.datetime.now() #获取程序结束时间
#print((ed-st).seconds) #计算整个程序完成时间
至此,完成了网页提取信息的功能。