• 如何利用 Selenium 对已打开的浏览器进行爬虫


    大家好!

    在对某些网站进行爬虫时,如果该网站做了限制,必须完成登录才能展示数据,而且只能通过短信验证码才能登录

    这时候,我们可以通过一个已经开启的浏览器完成登录,然后利用程序继续操作这个浏览器,即可以完成数据的爬取了

    具体操作步骤如下:

    1-1 安装依赖

    1. # 安装依赖
    2. pip3 install selenium

    1-2 Chrome 应用完整路径

    右键查看 Chrome 浏览器的完整路径

    比如:C:\Program Files\Google\Chrome\Application\chrome.exe

    图片

    1-3 命令行启动浏览器

    接下来,在 CMD 终端中通过命令行启动 Chrome 浏览器

    1. # 启动浏览器
    2. cd C:\Program Files\Google\Chrome\Application && chrome.exe --remote-debugging-port=1234 --user-data-dir=“C:\selenum\user_data”

    其中

    –remote-debugging-port

    指定浏览器调试端口号

    PS:这里可以随机指定一个端口号,不要指定为已经被占用的端口号

    –user-data-dir

    用户配置文件目录

    这里需要单独指定一个文件夹目录(不存在会新建),如果不显式指定该参数,运行会污染浏览器默认的配置文件

    1-4 下载 ChromeDriver

    根据 Chrome 浏览器版本下载对应的 ChromeDriver 驱动移动到某一个目录下

    下载地址:

    http://chromedriver.storage.googleapis.com/index.html

    1-5 操作已打开的浏览器

    假设上面开启的浏览器打开百度首页,我们现在编写一个简单的程序来继续操作上面的浏览器

    注意的是,这里需要利用 debuggerAddress 指定浏览器的地址及端口号

    1. from selenium import webdriver
    2. from selenium.webdriver.chrome.options import Options
    3. from selenium.webdriver.chrome.service import Service
    4. from selenium.webdriver.common.by import By
    5. chrome_options = Options()
    6. # 指定已经打开浏览器的地址及端口号
    7. chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:1234")
    8. # 注意:chrome版本与chromedirver驱动要保持一致
    9. # 下载地址:http://chromedriver.storage.googleapis.com/index.html
    10. s = Service(r"C:\Users\xingag\Desktop\111\chromedriver.exe")
    11. driver = webdriver.Chrome(service=s, options=chrome_options)
    12. # 操作浏览器
    13. input_element = driver.find_element(By.ID, 'kw')
    14. if input_element:
    15. # 关键字
    16. input_element.send_keys("AirPython")
    17. submit_element = driver.find_element(By.ID, 'su')
    18. if submit_element:
    19. # 点击搜索
    20. submit_element.click()
    21. # 释放资源
    22. # driver.close()

    最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

    在这里插入图片描述

    这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!   

  • 相关阅读:
    【Linux】进程间通信(匿名管道、命名管道、共享内存等,包含代码示例)
    OpenGL —— 2.9、摄像机之模拟CS鼠标视角转动(附源码,glfw+glad)
    用照片预测人的年龄【图像回归】
    对比两个数组中 每个对应位置的元素大小 返回每个对比结果组成的列表 numpy.fmin()
    构建决策树
    Unity两种VR环境配置方法
    Doris扩容和缩容
    后端jar包部署常见运行和停止命令
    13.cuBLAS开发指南中文版--cuBLAS中的Level-1函数copy()和dot()
    Mybatis+Mapper完成对数据库的增删改查
  • 原文地址:https://blog.csdn.net/qq_48811377/article/details/132760460