zoukankan      html  css  js  c++  java
  • ??--. selenium,phantomJs

    一、有界面:selenium

    二、无界面:phantomJs

    三、无界面:谷歌无头浏览器

    四、用phantomJ实现动态加载数据效果

    =======================================================

    一、有界面:selenium

    selenum:三方库。可以实现让浏览器完成自动化的操作。用代码实现拖动滚轮,点击鼠标等
    环境搭建
      1.安装:pip install selenium
      2.获取浏览器的驱动程序:
        谷歌浏览器驱动下载地址:http://chromedriver.storage.googleapis.com/index.html
        驱动版本与浏览器版本对照表:http://blog.csdn.net/huilan_same/article/details/51896672
    查找节点方法:
    ======================================================
    #使用下面的方法,查找指定的元素                      +
    find_element_by_id 根据id找节点                    +
    find_elements_by_name 根据name找                  +
    find_elements_by_xpath 根据xpath查找                 +
    find_elements_by_tag_name 根据标签名找                 +
    find_elements_by_class_name 根据class名字查找           +
    ======================================================

    需求一:用selenium实现-打开百度,输入"美女",点击"搜索",关闭浏览器
    from selenium import webdriver
    from time import sleep
    #创建浏览器对象,通过该对象可以操作浏览器,记得前面加r'','r'是防止字符转义的
    bro = webdriver.Chrome(executable_path = r'驱动路径')
    #使用浏览器发起get请求打开百度
    bro.get("http://www.baidu.com")
    #让百度进行指定词条的搜索
    text = bro.find_element_by_id('kw') #定位到了text文本框
    text.send_keys('美女') # 向文本框中录入指定内容
    button = bro.find_element_by_id('su') # 获取“百度一下”按钮
    button.click() # 点击操作
    bro.quit()

    需求二:用selenium实现--操作设置按钮
    from selenium import webdriver
    bro = webdriver.Chrome(executable_path = r'驱动路径')
    # 查找页面的“设置”选项,并进行点击
    bro.find_elements_by_link_text('设置')[0].click()
    # 打开设置后找到“搜索设置”选项,设置为每页显示50条
    bro.find_elements_by_link_text('搜索设置')[0].click()
    # 选中每页显示50条
    m = bro.find_element_by_id('nr')
    m.find_element_by_xpath('//*[@id="nr"]/option[3]').click()
    m.find_element_by_xpath('.//option[3]').click()
    # 点击保存设置
    bro.find_elements_by_class_name("prefpanelgo")[0].click()
    # 处理弹出的警告页面 确定accept() 和 取消dismiss()
    bro.switch_to_alert().accept()
    # 在打开的页面中找到“Selenium - 开源中国社区”,并打开这个页面
    driver.find_elements_by_link_text('美女_百度图片')[0].click()
    # 关闭浏览器
    driver.quit()

    二、无界面:phantomJs

    PhantomJS是一款无界面的浏览器,其自动化操作流程和上述操作谷歌浏览器是一致的。
    由于是无界面的,为了能够展示自动化操作流程,PhantomJS为用户提供了一个截屏的功能,使用save_screenshot函数实现。


    需求1:用phantomJs实现--打开浏览器,输入“美女”,点击“搜索”,关闭浏览器
    from selenium import webdriver
    # phantomjs创建浏览器
    browser = webdriver.PhantomJS(executable_path = r'PhantomJS驱动路径')
    # 打开百度
    browser.get("http://www.baidu.com/")
    browser.save_screenshot(r'phantomjsaidu.png')
    # 查找input输入框
    my_input = browser.find_element_by_id('kw')
    # 往框里面写文字
    my_input.send_keys('美女')
    #截屏
    browser.save_screenshot(r'phantomjsmeinv.png')
    # 查找搜索按钮
    button = browser.find_elements_by_class_name('s_btn')[0]
    button.click()
    browser.save_screenshot(r'phantomjsshow.png')
    browser.quit()


    三、无界面:谷歌无头浏览器

    如果phantomJs不能用,可以使用这个。

    Demo:实现打开百度,然后退出
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    # 创建一个参数对象,用来控制chrome以无界面模式打开
    chrome_options = Options()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')
    # 驱动路径
    path = r'C:UsersBLiDesktop1801day05ziliaochromedriver.exe'
    # 创建浏览器对象
    browser = webdriver.Chrome(executable_path=path, chrome_options=chrome_options)
    # 上网
    url = 'http://www.baidu.com/'
    browser.get(url)
    browser.save_screenshot('baidu.png')
    browser.quit()

    四、用phantomJ实现动态加载数据效果

    需求:获取豆瓣电影中动态加载出更多电影详情数据,拖动滚轮到底部,会加载更多电影数据
    from selenium import webdriver
    bro = webdriver.PhantomJs(executable_path = r'驱动路径')
    #使用浏览器发起get请求打开豆瓣电影分类
    bro.get("https://movie.douban.com/typerank?type_name=%E5%96%9C%E5%89%A7&type=24&interval_id=100:90&action=")
    # 编写js代码,让页面中的滚轮滑动到底部
    js = 'window.scrollTo(0,document.body.scrollHeight)'
    # 让浏览器执行js代码
    bro.execute_script(js)
    # 获取加载数据后的页面:page_source获取浏览器当前页面数据,即滚轮拖动
    page_text = bro.page_source
    # 解析,略

  • 相关阅读:
    手机比电脑的优势
    Windows XP SP2 下防火墙规则的设置、开发等相关问题
    初识JQuery 实例一
    “周涛、马东、刘伟座谈马季老先生生平艺术生涯”观后感
    Official WPF Samples
    MFC 操作Windows Service,编码遇到的问题。
    WCF RIA Services Code Gallary To Explorer
    Asp.net 得到Cookie中值
    c# 隨機獲得枚舉值
    database link 與 同義詞的了解
  • 原文地址:https://www.cnblogs.com/staff/p/10768498.html
Copyright © 2011-2022 走看看