• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Python爬虫实现selenium处理iframe作用域问题

    项目场景:

    在使用selenium模块进行数据爬取时,通常会遇到爬取iframe中的内容。会因为定位的作用域问题爬取不到数据。

    问题描述:

    我们以菜鸟教程的运行实例为案例。
    按照正常的定位


    会以文本块生成xpath为/html/body/text()。这样的话根据xpath进行如下代码编写。

    #!/user/bin/
    # -*- coding:UTF-8 -*-
    # Author:Master
    
    from selenium import webdriver
    import time
    
    driver = webdriver.Chrome(executable_path="./chromedriver")
    driver.get('https://www.runoob.com/try/runcode.php?filename=HelloWorldtype=python3')
    time.sleep(2)
    text = driver.find_element_by_xpath('/html/body').text
    print(text)
    time.sleep(5)
    driver.quit()
    

    执行结果:


    很明显这并不是想要的结果。

    原因分析:

    当我们打开抓包工具定位到Hello, World!文本的时候会发现,该文本是在一个iframe中。这样的话我们xpath所定位到的内容则是大的html中的路径。我们需要的内容则是在iframe中的小的html中。

    解决方案:

    通过分析发现,想要解决问题的实质就是改变作用域。通过switch_to.frame(‘id')方法来改变作用域就可以了。

    重新编写代码:

    #!/user/bin/
    # -*- coding:UTF-8 -*-
    # Author:Master
    
    from selenium import webdriver
    import time
    
    driver = webdriver.Chrome(executable_path="./chromedriver")
    driver.get('https://www.runoob.com/try/runcode.php?filename=HelloWorldtype=python3')
    time.sleep(2)
    driver.switch_to.frame('iframeResult')
    text = driver.find_element_by_xpath('/html/body').text
    print(text)
    time.sleep(5)
    driver.quit()
    

    查看运行结果:

    到此这篇关于Python爬虫实现selenium处理iframe作用域问题的文章就介绍到这了,更多相关selenium iframe作用域内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • selenium学习教程之定位以及切换frame(iframe)
    • Python爬虫之Selenium中frame/iframe表单嵌套页面
    • Selenium向iframe富文本框输入内容过程图解
    • java selenium处理Iframe中的元素示例
    上一篇:python利用appium实现手机APP自动化的示例
    下一篇:Python利用socket模块开发简单的端口扫描工具的实现
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Python爬虫实现selenium处理iframe作用域问题 Python,爬虫,实现,selenium,