Python | 05.基于selenium的数据爬取

1.selenium

selenium是自动化测试工具,在python中引入selenium库,可调用webdriver来模拟使用浏览器人工访问网页,并完成各种交互

2.驱动下载

参考文章:selenium.common.exceptions.WebDriverException: Message: "chromedriver"解决

在使用selenium前,需要根据使用的浏览器下载对应的驱动,以Chrome为例:

  1. 查看自己的浏览器版本

image-20210926005216902

  1. 谷歌浏览器驱动下载网址下载版本最接近的驱动:

image-20210926005448403

  1. 将下载好的驱动放到C:\Program Files (x86)\Google\Chrome\Application

image-20210926005649709

  1. 将下载好的驱动放到项目启动文件所在目录

image-20210926010002335

3.selenium库的使用

3.1.基础使用

  1. 创建webdriver实例:

    当程序执行到webdriver.Chrome()时,便会开启浏览器客户端

    driver = webdriver.Chrome()
    
    # 设置超时时间为60s
    driver.set_script_timeout(60)
    driver.set_page_load_timeout(60)
    
  2. driver.get(url)跳转到对应的网站

    # 跳转到百度,不要遗漏前面的"https://"
    driver.get("https://www.baidu.com")
    
  3. driver.find_element_by_xpath(xpath_str)获取元素

    # 获取id为kw的HTML元素
    element = driver.find_element_by_xpath(xpath_str)
    
  4. element.get_attribute(attr_name)获取元素的属性

    # 获取元素的id
    element_id = element.get_attribute("id")
    
    # 获取元素的class
    element_class = element.get_attribute("class")
    
    # 获取元素的标签内容(textContent)
    element_text_content = element.get_attribute("textContent")
    

3.2.进阶使用:按键模拟

  1. 键盘按键模拟:导入Keys模块后,输入下方指令

    from selenium.webdriver.common.keys import Keys
    
    # 在element这个元素中按下回车
    element.send_keys(Keys.ENTER)
    

    按键字典如下:

    Keys.BACK_SPACE # 回退键(BackSpace)
    Keys.TAB # 制表键(Tab)
    Keys.ENTER # 回车键(Enter)
    Keys.SHIFT # 大小写转换键(Shift)
    Keys.CONTROL # Control键(Ctrl)
    Keys.ALT # ALT键(Alt)
    Keys.ESCAPE # 返回键(Esc)
    Keys.SPACE # 空格键(Space)
    Keys.PAGE_UP # 翻页键上(Page Up)
    Keys.PAGE_DOWN # 翻页键下(Page Down)
    Keys.END # 行尾键(End)
    Keys.HOME # 行首键(Home)
    Keys.LEFT # 方向键左(Left)
    Keys.UP # 方向键上(Up)
    Keys.RIGHT # 方向键右(Right)
    Keys.DOWN # 方向键下(Down)
    Keys.INSERT # 插入键(Insert)
    DELETE # 删除键(Delete)
    NUMPAD0 ~ NUMPAD9 # 数字键1-9
    F1 ~ F12 # F1 - F12键
    (Keys.CONTROL, ‘a’) # 组合键Control+a,全选
    (Keys.CONTROL, ‘c’) # 组合键Control+c,复制
    (Keys.CONTROL, ‘x’) # 组合键Control+x,剪切
    (Keys.CONTROL, ‘v’) # 组合键Control+v,粘贴
    
  2. 鼠标左键

    左键很简单,直接调用element的click()即可:

    # 在element这个元素中用鼠标左键一下
    element.click()
    

    复杂的按键、组合按键操作(如按住、拖拽、移动到某处等操作)则需要用到ActionChains,参考Python_Selenium之鼠标右键

  3. 调用js:driver.exectue_script(jsStr)

    以滚动鼠标滚轮为例:

    # 定义js:在id为"abc"的元素下,滚动鼠标滚轮到底部
    jsStr = "document.getElementsById('abc').scrollTop=100000"
    
    # 调用js
    driver.execute_script(jsStr)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值