Python selenium 获取标签内的文字,selenium获取文本框内容
记下最近写的爬虫项目遇到的坑。
项目需要获取网页标签元素的所有内容,但是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]。儿童;设e _ length=elements.lengthlet content= for(let I=0;即_长度;I ){ //获取标签内容并保存在内容变量content=elements[i]中。innerHTMLConsole.log(content)} //将标签内容保存在本地。此时,如果没有指定chrome浏览器的下载路径,将会下载到默认路径。//更改浏览器的默认下载路径。看其他博文,改起来很容易(函数下载(文件名,内容){ var a=document . createelement( a ));var Blob=new Blob([内容],{ type : application/octet-stream });a.href=窗口。URL . createobjecturl(blob);a.download=文件名;a . click();})(data.txt ,content);)第二步代码如下:用open(。/src/data/temp/data.txt , r , UTF-8-sig )作为文件:用于文件中的内容。Read lines (): print (content)至此,从页面中读取完整html标签的工作就完成了。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。