作为一个男人

在最高光的时刻

就是说出那句

之后

还不会被人打

...

虽然在现实生活中你无法这样

但是在这里

就让你体验一番

那种呼风唤雨的感觉

我们之前在爬取某些网站的时候

使用到了一些 python 的请求库

模拟浏览器的请求

我们需要抓包啥的

能不能不这样

可不可以就写几行代码

让它自己去打开浏览器

自己去请求我们要爬取的网站

自己去模拟我们的一些搜索

等等

反正就是

老子躺着,让它自己动

躺好

让 selenium 满足你的要求

怎么玩呢?

那么接下里就是

学习 python 的正确姿势

什么是 selenium ?

其实它就是一个自动化测试工具,支持各种主流的浏览器

直到遇到了 python

转身一变

selenium 变成了爬虫利器

我们先来安装一下

pip install selenium

接着我们还要下载浏览器驱动

小帅b用的是 Chrome 浏览器

所以下载的是 Chrome 驱动

当然你用别的浏览器也阔以

去相应的地方下载就行了

Chrome: https://sites.google.com/a/chromium.org/chromedriver/downloads
Edge: https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Firefox: https://github.com/mozilla/geckodriver/releases
Safari: https://webkit.org/blog/6900/webdriver-support-in-safari-10/

下载完之后

要配置一下环境变量

接着打开 pycharm

撸点代码

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.baidu.com") input = driver.find_element_by_css_selector('#kw')
input.send_keys("苍老师照片") button = driver.find_element_by_css_selector('#su')
button.click()

运行一下

可以看到

它自己打开了 Chrome 浏览器

访问了百度

搜索了苍老师的照片

这就是 selenium 的魅力

我们来看下我们刚刚写的代码

我们导入了 web 驱动模块

from selenium import webdriver

接着我们创建了一个 Chrome 驱动

driver = webdriver.Chrome()

有了实例之后

相当于我们有了 Chrome 浏览器了

接着使用 get 方法打开百度

driver.get("https://www.baidu.com")

打开百度之后

我们获取到输入框

至于怎么获取

等等会讲

获取到输入框之后我们就往里面写入我们要搜索的内容

input = driver.find_element_by_css_selector('#kw')
input.send_keys("苍老师照片")

输入完了之后呢

我们就获取到搜索这个按钮

然后点击

button = driver.find_element_by_css_selector('#su')
button.click()

就这样完成了一次自动的百度搜索

当我们使用驱动打开了一个页面

这时候其实没什么鸟用

因为我们要对那些元素进行操作

就像刚刚我们要获取输入框然后输入一些内容

还有获取按钮点击什么的

selenium 提供了挺多方法给我们获取的

当我们要在页面中获取一个元素的时候

可以使用这些方法

  • 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

比如我们打开了一个页面

是这样的 HTML

<html>
<body>
 <form id="loginForm">
  <input name="username" type="text" />
  <input name="password" type="password" />
  <input class="login" name="continue" type="submit" value="Login" />
 </form>
</body>
<html>

可以通过 id 获取 form 表单

login_form = driver.find_element_by_id('loginForm')

通过 name 获取相应的输入框

username = driver.find_element_by_name('username')
password = driver.find_element_by_name('password')

通过 xpath 获取表单

login_form = driver.find_element_by_xpath("/html/body/form[1]")
login_form = driver.find_element_by_xpath("//form[1]")
login_form = driver.find_element_by_xpath("//form[@id='loginForm']")

通过标签获取相应的输入框

input1 = driver.find_element_by_tag_name('input')

通过 class 获取相应的元素

login = driver.find_element_by_class_name('login')

用 Chrome 浏览器的审核元素

可以很方便获取相应的属性

直接 copy 就完事了

如果你觉得

find_element_by_xxx_xxx

太长了

那么你还可以这样

driver.find_elements(By.ID, 'xxx')

By.属性和上面的是一样的

ID = "id"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"

当然

我们玩的是爬虫

要的就是源代码

我们已经知道

通过

driver = webdriver.Chrome()

可以拿到浏览器对象

那么要获取源代码还不简单么?

获取请求链接

driver.current_url

获取 cookies

driver.get_cookies()

获取源代码

driver.page_source

获取文本的值

input.text

ok

以上就是 selenium 的常用方法

想要了解更多相关 selenium 的可以到官方文档查看

https://selenium-python.readthedocs.io/

下一次

小帅b将带你使用它来爬取网站

本篇完

再见

近期文章

python爬虫08 | 你的第二个爬虫,要过年了,爬取豆瓣最受欢迎的250部电影慢慢看

python爬虫07 | 有了 BeautifulSoup ,妈妈再也不用担心我的正则表达式了

python爬虫06 | 你的第一个爬虫,爬取当当网 Top 500 本五星好评书籍

扫一扫

学习 Python 没烦恼

 

坚持原创

给小帅b来个好看

python爬虫09 | 上来,自己动 !这就是 selenium 的牛逼之处的更多相关文章

  1. Python爬虫学习(10):Selenium的好基友PhantomJS

    上一节中我们学习了selenium,用python来操作浏览器,在做网页自动化测试的时候最好不过了 .如果我们来做爬虫用一个带界面的浏览器似乎不太好吧,那可咋办呢?别着急,下来我们要介绍的就是一款不带 ...

  2. Python爬虫实例(二)使用selenium抓取斗鱼直播平台数据

    程序说明:抓取斗鱼直播平台的直播房间号及其观众人数,最后统计出某一时刻的总直播人数和总观众人数. 过程分析: 一.进入斗鱼首页http://www.douyu.com/directory/all 进入 ...

  3. python爬虫知识点总结(八)Selenium库详解

    官方学习文档:http://selenium-python.readthedocs.io/api.html 一.什么是Selenium? 答:自动化测试工具,支持多种浏览器.用来驱动浏览器,发出指令让 ...

  4. 爬取网易云音乐评论!python 爬虫入门实战(六)selenium 入门!

    说到爬虫,第一时间可能就会想到网易云音乐的评论.网易云音乐评论里藏了许多宝藏,那么让我们一起学习如何用 python 挖宝藏吧! 既然是宝藏,肯定是用要用钥匙加密的.打开 Chrome 分析 Head ...

  5. Python爬虫学习(9):Selenium的使用

    1 简介以及安装 Selenium 是什么?一句话,自动化测试工具.它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器,如果你在这些浏览器里面安装一个 Seleni ...

  6. python爬虫-抓取acg12动漫壁纸排行设置为桌面壁纸

    ACG-wallpaper 初学python,之前想抓取P站的一些图片来着,然后发现acg12这里有专门的壁纸榜单,就写了个抓取壁纸作为mac桌面壁纸玩玩. 功能:抓取acg12壁纸榜单的动漫壁纸,并 ...

  7. [Python爬虫] 之二十九:Selenium +phantomjs 利用 pyquery抓取节目信息信息

    一.介绍 本例子用Selenium +phantomjs爬取节目(http://tv.cctv.com/epg/index.shtml?date=2018-03-25)的信息 二.网站信息 三.数据抓 ...

  8. [Python爬虫] 之二十八:Selenium +phantomjs 利用 pyquery抓取网站排名信息

    一.介绍 本例子用Selenium +phantomjs爬取中文网站总排名(http://top.chinaz.com/all/index.html,http://top.chinaz.com/han ...

  9. [Python爬虫] 之二十六:Selenium +phantomjs 利用 pyquery抓取智能电视网站图片信息

    一.介绍 本例子用Selenium +phantomjs爬取智能电视网站(http://www.tvhome.com/news/)的资讯信息,输入给定关键字抓取图片信息. 给定关键字:数字:融合:电视 ...

随机推荐

  1. axis实现webservices分布式通信

    分布式通信原理 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2ZsMjAxMjEzMTQ=/font/5a6L5L2T/fontsize/400/fil ...

  2. select readonly 不能看到其它选项解决方式

    在html中是select readonly后.依旧能够下拉选择.不想做disabled添加隐藏域,以下提供两种解决方式 解决方式1: onfocus="this.defaultIndex= ...

  3. 试试pypy

    pypy是一个python的解释器和JIT编译器.能够在不改动不论什么代码的情况下大幅提升python代码的性能. 使用超级简单,在官网下载编译好的二进制包进行安装,然后然后执行代码的时候指定这个解释 ...

  4. linux(centos)下安装git并上传代码些许步骤(亲自验证过的步骤)

     曾经听说了好多次github,但直到近期才第一次学习使用github来托管自己在linux下的代码! 说实话.我自己在使用的时候从网上查了好多教程.但总认为难以掌握(步骤过于繁琐),自己操作的时候还 ...

  5. ListView实现简单列表

    ListView实现简单列表 效果图: 啥也没干的ListView张这样: fry.Activity01 package fry; import com.example.ListView.R; imp ...

  6. bzoj1708[Usaco2007 Oct]Money奶牛的硬币(背包方案数dp)

    1708: [Usaco2007 Oct]Money奶牛的硬币 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 763  Solved: 511[Submi ...

  7. golang 字符串替换截取

    package main import "fmt" func main() { str := "XBodyContentX" content := str[1 ...

  8. MySql-Connector for NET 连接驱动选择

    尝试在Visual Studio2010, 2012环境下链接Mysql, 为啥不直接在App.config里面写字符串, 当然是可以,但是当你想用EF 的时候,必须要有个数据源, 首先在[服务资源管 ...

  9. HTML+CSS(11)

    n  CSS背景属性 Background-color:背景色. Background-image:背景图片地址.如:background-image:url(images/bg.gif;) Back ...

  10. css中background-origin属性的使用

    background-origin用来规定元素背景图像的相对定位位置,它有三个属性值: 1.border-box border-box表示元素背景图像相对于border区域开始定位. 代码如下: &l ...