• ??--. 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
    # 解析,略

  • 相关阅读:
    C# ref与out区别
    天气预报
    全面理解javascript的caller,callee,call,apply概念(修改版)
    SQL注入案例曝光,请大家提高警惕
    sql字段保存值[1,2,3,4,5]复杂取法,收藏sql函数
    MySQL故障诊断常用方法手册(含脚本、案例)
    2021 年 8 月国产数据库排行榜:秋日胜春朝
    【墨天轮专访第二期】巨杉数据库萧少聪:重视企业长期需求,打造中国的世界级产品
    【我和达梦的故事】 有奖征文活动开始啦,万元奖品池+现金奖励等你拿!
    2021年8月国产数据库排行榜:TiDB稳榜首,达梦返前三,Kingbase进十强,各厂商加速布局云生态
  • 原文地址:https://www.cnblogs.com/staff/p/10768498.html
Copyright © 2020-2023  润新知