selenium获取浏览器tag全部内容(包括标签)

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

项目需要获取网页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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使用PythonSelenium获取标签内容,你可以使用`find_element_by_xpath`或`find_element_by_tag_name`等方法来定位元素,然后使用`.text`属性来获取元素的文本内容。以下是一个示例代码,演示如何使用Selenium获取标签内容: ```python from selenium import webdriver driver = webdriver.Chrome() driver.get('http://www.example.com') # 使用XPath定位元素并获取文本内容 element = driver.find_element_by_xpath('//h1') text = element.text print(text) # 使用标签名定位元素并获取文本内容 element = driver.find_element_by_tag_name('p') text = element.text print(text) driver.quit() ``` 在这个示例中,我们首先导入了`webdriver`模块,并创建了一个Chrome浏览器的实例。然后,我们使用`get`方法打开了一个网页。接下来,我们使用`find_element_by_xpath`方法和XPath表达式`//h1`来定位页面上的`h1`标签,并使用`.text`属性获取其文本内容。同样地,我们使用`find_element_by_tag_name`方法和标签名`p`来定位页面上的`p`标签,并获取其文本内容。最后,我们使用`quit`方法关闭浏览器。 希望这个示例能帮助到你获取标签内容。如果你有任何其他问题,请随时提问。 #### 引用[.reference_title] - *1* [使用selenium定位获取标签对象并提取数据](https://blog.csdn.net/qq_45176548/article/details/111404630)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Python+Selenium基础篇之13 -获取元素上面的文字](https://blog.csdn.net/aa122509969/article/details/123867252)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [python+selenium遍历某一个标签中的内容](https://blog.csdn.net/weixin_30797199/article/details/96594605)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值