前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >知识点讲解四:selenium教程

知识点讲解四:selenium教程

作者头像
K同学啊
发布2019-01-28 17:21:07
1K0
发布2019-01-28 17:21:07
举报

环境: Python3.6.5

编译器: Sublime Text 3

联系方式: ke.zb@qq.com

第三方库: seleniu

我们模拟登陆用的是selenium库,selenium是一个自动化测试工具,在爬虫中通常用来进行模拟登陆。

二、安装

这里我推荐给大家的安装工具是命令行,win+R输入cmd可以快速打开命令行工具

在命令行中输入以下命令即可安装,前提是你已经安装好Python环境且pip可以正常使用

代码语言:javascript
复制
pip install selenuim

三、下载驱动器

驱动器是我们在通过selenium模拟用户操作时需要的一个工具,我这里用的是Chromedriver(谷歌浏览器驱动,对应谷歌浏览器),下面是Chrome、Edge、Firefox、Safari等浏览器驱动的下载地址

【Chrome驱动下载地址】

【Edge驱动下载地址】

【Firefox驱动下载地址】

【Safari驱动下载地址】

下载完成后我们有两种掉用驱动器的方法,一种是把驱动器放到py文件同一文件夹下,另外一种就是将驱动器放到Python的安装目录下,以下是我的Python安装目录

注:网上流传比较广的方法是将驱动器加到环境变量中,但是我试了好像不怎么管用依然会报错,所以我就不放到这里(实践过确实有效的童鞋,可以在文章下方留言,在此感谢你的分享)

四、简单实例

来一段代码让我们直观的理解一下selenium吧

代码语言:javascript
复制
from selenium import webdriver
 
driver = webdriver.Chrome()
driver.get('http://www.baidu.com/')

运行代码,我们可以看到跳出如下的浏览器界面

下面我们将继续完善代码来实现自动化,在搜索框中输入“明天依旧可好”–>点击搜索结果的第一条

代码语言:javascript
复制
time.sleep(1)
driver.find_element_by_xpath("//input[@name='wd']").send_keys("明天依旧可好")
time.sleep(2)
driver.find_element_by_xpath("//div[@class='result c-container ']//h3/a").click()

五、配置浏览器

我们在使用 selenium 时,可能需要对 chrome 做一些特殊的设置,以完成我们期望的浏览器行为,比如最大化窗口无窗口启动 等动作。这些需要selenium的ChromeOptions来帮助我们完成

(一)配置浏览器

chromeoptions 是一个方便控制 chrome 启动时属性的类,主要提供如下的功能:

  • 设置 chrome 二进制文件位置 (binary_location)
  • 添加启动参数 (add_argument)
  • 添加扩展应用 (add_extension, add_encoded_extension)
  • 添加实验性质的设置参数 (add_experimental_option)
  • 设置调试器地址 (debugger_address)

常用设置举例:

代码语言:javascript
复制
#设置无窗口
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
driver = webdriver.Chrome(chrome_options=options)
driver.get('https://blog.csdn.net/qq_38251616')

1.add_argument常用系列

  • 无窗口:- -headless
  • 启动就最大化:- -start-maximized
  • 设置窗口大小:- -window-size=100,100
  • 禁用弹出拦截:- -disable-popup-blocking
  • 禁用插件:- -disable-plugins
  • 禁用图像:- -disable-images
  • 伪装iphone登录:- -user-agent=iphone
  • 伪装android:- -user-agent=android
  • 设置语言为简体中文:- -lang=zh-CN
  • 使用给定的 User-Agent 字符串:- -user-agent=“这里填写User-Agent”
  • 禁用Javascript:- -disable-javascript
  • 指定用户文件夹User Data路径:- -user-data-dir="PATH"

注释:两个“-”中间是没有空格的,由于排版原因我在中间加了一个空格。

(二)添加代理

代码语言:javascript
复制
chrome_options = webdriver.ChromeOptions()
#设置代理
chrome_options.add_argument('--proxy-server=http://{ip}:{port}')
driver = webdriver.Chrome(chrome_options=options)
driver.get('https://blog.csdn.net/qq_38251616')

六、定位标签

定位方法示例:

代码语言:javascript
复制
#获取网页中的h1标签
h1 = driver.find_element_by_name("h1")
#获取网页中所有的h1标签
h1_list = driver.find_elements_by_name("h1")

单个元素选取:

  • find_element_by_id
  • find_element_by_name
  • find_element_by_xpath
  • find_element_by_link_text
  • find_element_by_partial_link_text
  • find_element_by_tag_name
  • find_element_by_class_name
  • find_element_by_css_selector

多个元素选取:

  • find_elements_by_name
  • find_elements_by_xpath
  • find_elements_by_link_text
  • find_elements_by_partial_link_text
  • find_elements_by_tag_name
  • find_elements_by_class_name
  • find_elements_by_css_selector

七、页面操作

selenium最主要的优势在于我们可以在代码中添加需要对网页进行的操作,比如输入提交表单、点击按钮、清空输入框等等。下面我将常用的操作一一列举出来

代码示例

代码语言:javascript
复制
driver.find_element_by_xpath("//input[@name='wd']").send_keys("明天依旧可好")
driver.find_element_by_xpath("//input[@name='wd']").clear()
driver.find_element_by_xpath("//div[@class='result c-container ']//h3/a").click()

操作列举

  • 点击:click()
  • 提交文本:send_keys(“AAAA”)
  • 清空输入框:clear()

N、后记

关于selenium实战项目请参考:【实现CSDN自动点赞】【爬取QQ群中的人员信息】

我的专栏:【机器学习100天】【K童鞋的爬虫笔记】

参考文章:selenium 定制启动 chrome 的选项selenium+python配置chrome浏览器的选项

如果觉得我写得可以点个赞呗;如果有什么不足的地方,还你希望可以在下方留言告诉我。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年01月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二、安装
  • 三、下载驱动器
  • 四、简单实例
  • 五、配置浏览器
    • (一)配置浏览器
      • (二)添加代理
      • 六、定位标签
      • 七、页面操作
      • N、后记
      相关产品与服务
      命令行工具
      腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档