zoukankan      html  css  js  c++  java
  • phantomJS,谷歌无头浏览器, 模拟登陆qq空间

    无头浏览器就是不用弹出可视化界面

    我们主要用的就是谷歌无头浏览器

    谷歌无头浏览器

    由于PhantomJs最近已经停止了更新和维护,所以推荐大家可以使用谷歌的无头浏览器,是一款无界面的谷歌浏览器。

    示例:
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    import time
     
    # 创建一个参数对象,用来控制chrome以无界面模式打开
    chrome_options = Options()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')
    # 驱动路径
    path = r'./chromedriver.exe'
     
    # 创建浏览器对象
    browser = webdriver.Chrome(executable_path=path, chrome_options=chrome_options)
     
    # 上网
    url = 'http://www.baidu.com/'
    browser.get(url)
    time.sleep(3)
     
    browser.save_screenshot('baidu.png')
     
    browser.quit()
    实际使用
    from selenium import webdriver
    from lxml import etree
    import time
    
    from selenium.webdriver.chrome.options import Options
    chrome_options = Options()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')
    
    bro = webdriver.Chrome(executable_path='./chromedriver.exe',chrome_options=chrome_options)
    #让浏览器对指定url发起访问
    bro.get('http://125.35.6.84:81/xk/')
    
    #获取浏览器当前打开页面的页面源码数据(可见即可得)
    page_text = bro.page_source
    time.sleep(2)
    tree = etree.HTML(page_text)
    name = tree.xpath('//*[@id="gzlist"]/li[1]/dl/a/text()')[0]
    print(name)
    time.sleep(3)
    bro.quit()

     模拟登陆qq空间

    import requests
    from selenium import webdriver
    from lxml import etree
    import time
    
    driver = webdriver.Chrome(executable_path='./chromedriver.exe')
    driver.get('https://qzone.qq.com/')
    # 在web 应用中经常会遇到frame 嵌套页面的应用,使用WebDriver 每次只能在一个页面上识别元素,对于frame 嵌套内的页面上的元素,直接定位是定位是定位不到的。这个时候就需要通过switch_to_frame()方法将当前定位的主体切换了frame 里。
    driver.switch_to.frame('login_frame')
    driver.find_element_by_id('switcher_plogin').click()
    
    # driver.find_element_by_id('u').clear()
    driver.find_element_by_id('u').send_keys('328410948')  # 这里填写你的QQ号
    # driver.find_element_by_id('p').clear()
    driver.find_element_by_id('p').send_keys('xxxxxx')  # 这里填写你的QQ密码
    
    driver.find_element_by_id('login_button').click()
    time.sleep(2)
    # driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')
    # time.sleep(2)
    # driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')
    # time.sleep(2)
    # driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')
    # time.sleep(2)
    # page_text = driver.page_source
    #
    # tree = etree.HTML(page_text)
    # # 执行解析操作
    # li_list = tree.xpath('//ul[@id="feed_friend_list"]/li')
    # for li in li_list:
    #     text_list = li.xpath('.//div[@class="f-info"]//text()|.//div[@class="f-info qz_info_cut"]//text()')
    #     text = ''.join(text_list)
    #     print(text + '
    
    
    ')
    
    driver.close()

    phantomJS

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

    from selenium import webdriver
    import time
    
    # phantomjs路径
    path = r'PhantomJS驱动路径'
    browser = webdriver.PhantomJS(path)
    
    # 打开百度
    url = 'http://www.baidu.com/'
    browser.get(url)
    
    time.sleep(3)
    
    browser.save_screenshot(r'phantomjsaidu.png')
    
    # 查找input输入框
    my_input = browser.find_element_by_id('kw')
    # 往框里面写文字
    my_input.send_keys('美女')
    time.sleep(3)
    #截屏
    browser.save_screenshot(r'phantomjsmeinv.png')
    
    # 查找搜索按钮
    button = browser.find_elements_by_class_name('s_btn')[0]
    button.click()
    
    time.sleep(3)
    
    browser.save_screenshot(r'phantomjsshow.png')
    
    time.sleep(3)
    
    browser.quit()
  • 相关阅读:
    iOS学习笔记---oc语言第一天
    iOS学习笔记---c语言第十一天
    iOS学习笔记---c语言第十天
    iOS学习笔记---c语言第九天
    iOS学习笔记---c语言第八天
    iOS学习笔记---c语言学习第七天
    iOS学习笔记---c语言第六天
    C语言常用排序全解(转)
    iOS学习笔记---C语言第五天
    iOS学习笔记---C语言第四天
  • 原文地址:https://www.cnblogs.com/robertx/p/10951530.html
Copyright © 2011-2022 走看看