首页 > 编程知识 正文

selenium获取标签属性,selenium获取标签文本值

时间:2023-05-05 21:07:14 阅读:209439 作者:329

记录一下最近写的爬虫项目遇到的坑。

项目需要获取网页tag元素的全部内容,但是selenium没有提供这个功能,遂想到js里dom的元素innerHTML。但是问题来了,怎么把js变量保存到python变量中呢?

步骤如下:

1.使用selenium的execute("console.log("相关信息");")将信息输出至浏览器日志系统。

2.使用selenium的driver.get_log("browser")获取浏览器日志。

代码如下:

driver.get("https://www.baidu.com")driver.execute("console.log(document.getElementById("s_kw_wrap"));")content = driver.get_log("browser")[0]print(content) 经过测试,上面的方法是错误的!!!!!并不能够获取到浏览器日志中的内容,原因是浏览器为了安全并不允许读取日志内容!!!所以上面的方法并不能得到浏览器控制台console.log()函数输出的信息。想获得标签只能另寻他法。如下:

1.通过运行selenium中的execute_script()函数,使用js将标签内容写入本地,以txt文件的形式存储。

2.读取txt文件,获得标签内容。

第一步代码如下: driver.execute_script( """ //js使用dom技术获取标签 let elements = document.getElementsByClassName("content-wrapper")[0].children; let e_length = elements.length; let content = "" for(let i = 0; i < e_length; i++){ //获取标签内容,保存在content变量中 content += elements[i].innerHTML; console.log(content) } //将标签内容存入本地,此时如果没有指定chrome浏览器下载路径,将下载到默认路径 //更改浏览器默认下载路径见其他博文,很容易改 (function download(filename,content) { var a = document.createElement('a'); var blob = new Blob([content], { 'type': 'application/octet-stream' }); a.href = window.URL.createObjectURL(blob); a.download = filename; a.click(); })("data.txt", content); """ ) 第二步代码如下: with open("./src/data/temp/data.txt", "r", "utf-8-sig") as file: for content in file.readlines(): print(content)

至此,从页面读取完整html标签的工作做完。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。