美文网首页程序员
2018年python3与selenium教程第1节

2018年python3与selenium教程第1节

作者: 闲睡猫 | 来源:发表于2018-08-30 10:32 被阅读507次

    相关环境搭建请参照mac 搭建selenium与ChromeDriver环境

    selenium 初体验

    selenium自动获取百度搜索结果

    源码:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.wait import WebDriverWait
    
    browser = webdriver.Chrome()
    try:
        browser.get('https://www.baidu.com')
        input = browser.find_element_by_id('kw')
        input.send_keys('Python爬虫')
        input.send_keys(Keys.ENTER)
        wait = WebDriverWait(browser, 10)
        wait.until(EC.presence_of_all_elements_located((By.ID, 'content_left')))
        print(browser.current_url)
        print(browser.get_cookies())
        print(browser.page_source)
    finally:
        browser.close()
    
    自动调用浏览器

    与此同时,终端会将获取到的结果都打印出来

    声明浏览器

    selenium支持多个浏览器,声明浏览器的方式如下:

    源码:

    from selenium import webdriver
    browser = webdriver.Chrome() # 声明 chrome
    browser = webdriver.Firefox() # 声明 Firefox
    

    访问页面

    源码:

    from selenium import webdriver
    
    browser = webdriver.Chrome() # 声明浏览器
    browser.get('https://www.baidu.com') # 访问网页
    print(browser.page_source) # 将源码打印到终端
    browser.close() # 关闭浏览器
    

    运行脚本,会看到程序自动打开浏览器访问百度,并将源码输出到了终端

    查找节点

    获取知乎的搜索框节点

    搜索框 源码

    源码:

    from selenium import webdriver
    
    browser = webdriver.Chrome() # 声明浏览器
    browser.get('https://www.zhihu.com') # 访问网页
    search_input = browser.find_element_by_id('Popover1-toggle') # 查找节点
    print(search_input)
    browser.close() # 关闭浏览器
    

    结果

    ☁  crawler  python3 test_selenium.py
    <selenium.webdriver.remote.webelement.WebElement (session="bec64b422b99b683ea64133e6e4002d4", element="0.4626614526678319-1")>
    

    通过pycharm,进入browser.find_element_by_id源码,可看到还有多种方式能获取节点

    节点查找方法

    多节点查找

    多节点

    源码:

    from selenium import webdriver
    
    browser = webdriver.Chrome() # 声明浏览器
    browser.get('http://36kr.com/') # 访问网页
    lis = browser.find_elements_by_class_name('radius') # 根据类名查找节点
    print(lis)
    browser.close() # 关闭浏览器
    
    执行结果

    节点交互

    需求:打开百度首页,在搜索框输入“三体“,然后清空搜索框,再输入“球状闪电”,最后点击搜索按钮

    相当于模拟用户的真实操作

    百度搜索框

    源码:

    from selenium import webdriver
    import time
    
    browser = webdriver.Chrome() # 声明浏览器
    browser.get('https://www.baidu.com') # 访问网页
    search_input = browser.find_element_by_id('kw') # 获取搜索框
    search_input.send_keys('三体') # 将文字填充到搜索框
    time.sleep(2)
    search_input.clear() # 清空搜索框
    search_input.send_keys('球状闪电')
    submit = browser.find_element_by_id('su') # 获取提交按钮
    submit.click() # 点击提交按钮
    time.sleep(2)
    browser.close() # 关闭浏览器
    
    节点交互

    更多的节点交互请查看官方文档

    相关文章

      网友评论

        本文标题:2018年python3与selenium教程第1节

        本文链接:https://www.haomeiwen.com/subject/wilrwftx.html