1. 网页的打开

  1. from selenium import webdriver
  2. import time
  3.  
  4. driver = webdriver.Chrome(executable_path=r"C:\Users\qq302\Desktop\chromedriver.exe")
  5.  
  6. # 1.打开浏览器
  7. driver.get('https://www.baidu.com/')

2.网页浏览器的关闭

  1. from selenium import webdriver
  2. import time
  3.  
  4. driver = webdriver.Chrome(executable_path=r"C:\Users\qq302\Desktop\chromedriver.exe")
  5. driver.get('https://www.baidu.com/')
  6. time.sleep(5)
  7. driver.close() # 关闭当前网页
  8. driver.quit() # 关闭整个浏览器

3. 关于内容元素分析

  1. from selenium import webdriver
  2. import time
  3.  
  4. driver = webdriver.Chrome(executable_path=r"C:\Users\qq302\Desktop\chromedriver.exe")
  5. driver.get('https://www.baidu.com/')
  6. # 使用id进行查找
  7. inputTag = driver.find_element_by_id('kw')
  8. # 使用class_name 进行查找
  9. inputTag = driver.find_element_by_class_name('s_ipt')
  10. # 使用xpath 进行查找
  11. inputTag = driver.find_element_by_xpath("//input[@id='kw']")
  12. # 使用css解析器进行查找
  13. inputTag = driver.find_element_by_css_selector('.s_ipt')
  14. # 我们也可以使用By进行元素的查找
  15. from selenium.webdriver.common.by import By
  16.  
  17. inputTag = driver.find_element(By.ID, 'kw')
  18. inputTag.send_keys('python')
  19.  
  20. # 如果需要进行文本分析的话
  21. from lxml import etree
  22.  
  23. html = etree.HTML(driver.page_source)
  24. print(html.xpath(''))

4. 操作表单元素

  1. from selenium import webdriver
  2. import time
  3.  
  4. # 第一种:send_keys() 发送文本
  5. driver = webdriver.Chrome(executable_path=r"C:\Users\qq302\Desktop\chromedriver.exe")
  6. driver.get('https://www.baidu.com/')
  7. inputTag = driver.find_element_by_id('kw')
  8. inputTag.send_keys('python') # 向kw发送python
  9. time.sleep(5)
  10. inputTag.clear() # 进行输入的清除
  11.  
  12. # 第二种:进行点击操作
  13. driver = webdriver.Chrome(executable_path=r"C:\Users\qq302\Desktop\chromedriver.exe")
  14. driver.get('https://www.baidu.com/')
  15. inputTag = driver.find_element_by_id('kw')
  16. inputTag.send_keys('python') # 向kw发送python
  17. time.sleep(5)
  18. inputTag.click() # 进行输入的清除
  19.  
  20. # 第三种进行下拉框的操作
  21. from selenium.webdriver.support.ui import Select
  22. driver = webdriver.Chrome(executable_path=r"C:\Users\qq302\Desktop\chromedriver.exe")
  23. driver.get('https://www.baidu.com/')
  24. SelectBn = Select(driver.find_element_by_class_name('pf'))
  25. SelectBn.select_by_index(1)
  26. SelectBn.deselect_all()

5.行为链模仿鼠标进行移动,点击,双击操作

  1. from selenium import webdriver
  2. from selenium.webdriver.common.action_chains import ActionChains
  3. import time
  4.  
  5. from selenium.webdriver.support.ui import Select
  6. driver = webdriver.Chrome(executable_path=r"C:\Users\qq302\Desktop\chromedriver.exe")
  7. driver.get('https://www.baidu.com/')
  8.  
  9. inputTag = driver.find_element_by_id('kw')
  10. submitBn = driver.find_element_by_id('su')
  11.  
  12. actions = ActionChains(driver)
  13. actions.move_to_element(inputTag) # 将鼠标进行移动
  14.  
  15. inputTag.send_keys('python') # 发送python文本
  16. actions.click(submitBn) # 对百度一下进行点击
  17. actions.perform() # 进行action操作
  18.  
  19. # click_and_hold(element) 右键点击且不松手
  20. # context_click(element) # 右键点击
  21. # double_click(element) # 进行双击操作

6. 对cookie进行操作,包括获取当前cookie,删除cookie

  1. from selenium import webdriver
  2. from selenium.webdriver.common.action_chains import ActionChains
  3. import time
  4.  
  5. from selenium.webdriver.support.ui import Select
  6. driver = webdriver.Chrome(executable_path=r"C:\Users\qq302\Desktop\chromedriver.exe")
  7. driver.get('https://www.baidu.com/')
  8.  
  9. for cookie in driver.get_cookies(): # 获得所有的cookie信息
  10. print(cookie)
  11.  
  12. driver.delete_cookie('BD_HOME') # 删除cookie
  13. print(driver.get_cookie('BD_HOME')) # 获得当前的cookie值
  14. driver.delete_all_cookies() # 删除所有的cookie值

7. 隐式等待和显示等待

  1. # 隐式等待
  2. from selenium import webdriver
  3. from selenium.webdriver.common.action_chains import ActionChains
  4. import time
  5.  
  6. from selenium.webdriver.support.ui import Select
  7. driver = webdriver.Chrome(executable_path=r"C:\Users\qq302\Desktop\chromedriver.exe")
  8. driver.get('https://www.baidu.com/')
  9. # 隐式等待
  10. driver.implicitly_wait(10) # 最长等待10秒
  11. driver.find_element_by_id('kw').send_keys('python')
  12. driver.find_element_by_id('su').click()
  13.  
  14. # 显示等待, 如果在10秒内没有出现就爬出异常
  15. # 显示等待
  16. from selenium import webdriver
  17. from selenium.webdriver.common.by import By
  18. from selenium.webdriver.support.ui import WebDriverWait
  19. from selenium.webdriver.support import expected_conditions as EC
  20.  
  21. driver = webdriver.Chrome(executable_path=r"C:\Users\qq302\Desktop\chromedriver.exe")
  22. driver.get('https://www.baidu.com/')
  23. try:
  24. WebDriverWait(driver, 10).until(
  25. EC.presence_of_element_located((By.ID, 'kw'))
  26. )
  27. finally:
  28. print('end')

8. 进行窗口的切换driver.switch_to.window(driver.window_handles[1])

  1. from selenium import webdriver
  2.  
  3. driver_path = r'C:\Users\qq302\Desktop\chromedriver.exe'
  4. driver = webdriver.Chrome(executable_path=driver_path)
  5. driver.get('https://www.baidu.com/')
  6.  
  7. driver.execute_script("window.open('https://www.douban.com/')") # 打开豆瓣的网址
  8. driver.execute_script('window.scrollTo(0, 1000000)')# 进行窗口的刷新移动
  9. print(driver.window_handles) # 打印文件句柄
  10. driver.switch_to.window(driver.window_handles[1]) # 切换driver的窗口
  11. print(driver.current_url)

9.使用免费的代理ip打开网页

  1. # 9 设置代理Ip
  2. from selenium import webdriver
  3.  
  4. options = webdriver.ChromeOptions()
  5. options.add_argument('--proxy-server=http://61.189.242.243:55484') # 61.189.242.243表示ip, 55484表示端口号
  6.  
  7. driver = webdriver.Chrome(executable_path=r'C:\Users\qq302\Desktop\chromedriver.exe', options=options)
  8.  
  9. driver.get(r'http://httpbin.org/ip') # 使用代理ip打开网页

10.webdriverElement补充操作

  1. # 10. WebElement元素补充操作
  2. from selenium import webdriver
  3. from selenium.webdriver.remote.webelement import WebElement
  4.  
  5. driver_path = r'C:\Users\qq302\Desktop\chromedriver.exe'
  6. driver = webdriver.Chrome(executable_path=driver_path)
  7. driver.get('https://www.baidu.com/')
  8.  
  9. submitBn = driver.find_element_by_id('su')
  10. print(submitBn.get_attribute('value')) # 获得当前的value属性
  11. driver.save_screenshot('baidu.png') # 进行截图保存

selenium爬虫使用的更多相关文章

  1. Python爬虫之selenium爬虫,模拟浏览器爬取天猫信息

    由于工作需要,需要提取到天猫400个指定商品页面中指定的信息,于是有了这个爬虫.这是一个使用 selenium 爬取天猫商品信息的爬虫,虽然功能单一,但是也算是 selenium 爬虫的基本用法了. ...

  2. python爬虫---单线程+多任务的异步协程,selenium爬虫模块的使用

    python爬虫---单线程+多任务的异步协程,selenium爬虫模块的使用 一丶单线程+多任务的异步协程 特殊函数 # 如果一个函数的定义被async修饰后,则该函数就是一个特殊的函数 async ...

  3. 爬虫(十一):selenium爬虫

    1. selenium基础 selenium部分可以去看我写的selenium基础部分,由于链接太多了这里就不发出来了. 代理ip: 有时候频繁爬取一些网页.服务器发现你是爬虫后会封掉你的ip地址.这 ...

  4. Selenium爬虫实践(踩坑记录)之ajax请求抓包、浏览器退出

    上一篇: 使用Selenium截取网页上的图片 前言 最近在搞公司内部系统,累的一批,需要从另一个内部系统导出数据存到数据库做分析,有大量的数据采集工作,又没办法去直接拿到那个系统的接口,太难了,只能 ...

  5. Ubuntu下的Selenium爬虫的配置

    在服务器Ubuntu系统上跑爬虫,爬虫是基于Selenium写的,遇到好几个问题,现在这里记录一下. 1. 安装环境 阿里云,Ubuntu16.04,因为没有界面,所以远程命令行操作.爬虫是基于Sel ...

  6. Katalon Recorder 自动录制 Selenium 爬虫脚本

    相信很多小伙伴都用过 Selenium 来完成爬虫工作,今天就给大家带来一个神器,可以录制你的浏览器动作,然后直接生成 Selenium 脚本,是不是心动了? 1 Selenium 简介 Seleni ...

  7. selenium爬虫

    Web自动化测试工具,可运行在浏览器,根据指令操作浏览器,只是工具,必须与第三方浏览器结合使用,相比于之前学的爬虫只是慢了一点而已.而且这种方法爬取的东西不用在意时候ajax动态加载等反爬机制.因此找 ...

  8. 使用selenium爬虫抓取数据

    写在前面 本来这篇文章该几个月前写的,后来忙着忙着就给忘记了.ps:事多有时候反倒会耽误事.几个月前,记得群里一朋友说想用selenium去爬数据,关于爬数据,一般是模拟访问某些固定网站,将自己关注的 ...

  9. selenium爬虫入门(selenium+Java+chrome)

    selenium是一个开源的测试化框架,可以直接在浏览器中运行,就像用户直接操作浏览器一样,十分方便.它支持主流的浏览器:chrome,Firefox,IE等,同时它可以使用Java,python,J ...

  10. python selenium爬虫工具

    今天seo的同事需要一个简单的爬虫工具, 根据一个url地址,抓取改页面的a连接,然后进入a连接里面的页面再次抓取a连接 1.需要一个全局的set([])集合来保存抓取的url地址 2.由于现在单页面 ...

随机推荐

  1. Windows命令行命令总结

    转载地址:https://www.cnblogs.com/accumulater/p/7110811.html   1. gpedit.msc-----组策略 2. sndrec32-------录音 ...

  2. [LeetCode]1089. Duplicate Zeros

    Given a fixed length array arr of integers, duplicate each occurrence of zero, shifting the remainin ...

  3. python之字典二 内置方法总结

    Python字典包含了以下内置方法: clear()函数用于删除字典内所有元素 dict1 = {, 'Class': 'First'} print('the start len %d' % len( ...

  4. JavaMaven【一、概述&环境搭建】

    课程概述 JavaMaven[一.概述&环境搭建] JavaMaven[二.目录结构&HelloMaven] JavaMaven[三.常用指令] JavaMaven[四.坐标& ...

  5. 7、Nginx基础Http原理

    1Http协议概述 HTTP全称HyperText Transfer Protocol中文名为超文本传输协议 1.1.什么是超文本? 包含有超链接(Link)和各种多媒体元素标记的文本.这些超文本文件 ...

  6. 4.NIO_Channel 通道

    1.通道(Channel) 由 java.nio.channels 包定义的.Channel 表示 IO 源与目标打开的连接.Channel 类似于传统的“流”.只不过 Channel 本身不能直接访 ...

  7. django_celery_results安装的坑

    前言  在Celery4.0之前的版本中,有一个专门供Django使用的Celery版本django-celery.但现在Celery已经统一为一个版本,所以直接安装原生的Celery即可.这里就暂时 ...

  8. 1.opencv_画图

    #导入工具包 import numpy as np import cv2 import matplotlib.pyplot as plt # 定义显示图片 def show(image): plt.i ...

  9. linux 远程配置docker加速器

    https://www.jianshu.com/p/dca49964af04 curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh ...

  10. top命令参数详解

    简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按 ...