python爬虫09selenium
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/ |
下载完之后
要配置一下环境变量

这就是 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
python爬虫09selenium的更多相关文章
- Python 爬虫模拟登陆知乎
在之前写过一篇使用python爬虫爬取电影天堂资源的博客,重点是如何解析页面和提高爬虫的效率.由于电影天堂上的资源获取权限是所有人都一样的,所以不需要进行登录验证操作,写完那篇文章后又花了些时间研究了 ...
- python爬虫成长之路(一):抓取证券之星的股票数据
获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇使用的版本为python3.5,意在抓取证券之星上当天所 ...
- python爬虫学习(7) —— 爬取你的AC代码
上一篇文章中,我们介绍了python爬虫利器--requests,并且拿HDU做了小测试. 这篇文章,我们来爬取一下自己AC的代码. 1 确定ac代码对应的页面 如下图所示,我们一般情况可以通过该顺序 ...
- python爬虫学习(6) —— 神器 Requests
Requests 是使用 Apache2 Licensed 许可证的 HTTP 库.用 Python 编写,真正的为人类着想. Python 标准库中的 urllib2 模块提供了你所需要的大多数 H ...
- 批量下载小说网站上的小说(python爬虫)
随便说点什么 因为在学python,所有自然而然的就掉进了爬虫这个坑里,好吧,主要是因为我觉得爬虫比较酷,才入坑的. 想想看,你可以批量自动的采集互联网上海量的资料数据,是多么令人激动啊! 所以我就被 ...
- python 爬虫(二)
python 爬虫 Advanced HTML Parsing 1. 通过属性查找标签:基本上在每一个网站上都有stylesheets,针对于不同的标签会有不同的css类于之向对应在我们看到的标签可能 ...
- Python 爬虫1——爬虫简述
Python除了可以用来开发Python Web之后,其实还可以用来编写一些爬虫小工具,可能还有人不知道什么是爬虫的. 一.爬虫的定义: 爬虫——网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区 ...
- Python爬虫入门一之综述
大家好哈,最近博主在学习Python,学习期间也遇到一些问题,获得了一些经验,在此将自己的学习系统地整理下来,如果大家有兴趣学习爬虫的话,可以将这些文章作为参考,也欢迎大家一共分享学习经验. Pyth ...
- [python]爬虫学习(一)
要学习Python爬虫,我们要学习的共有以下几点(python2): Python基础知识 Python中urllib和urllib2库的用法 Python正则表达式 Python爬虫框架Scrapy ...
随机推荐
- 诊断日志知多少 | DiagnosticSource 在.NET上的应用
1. 引言 最近为了解决ABP集成CAP时无法通过拦截器启用工作单元的问题,从小伙伴那里学了一招.借助DiagnossticSource,可以最小改动完成需求.关于DiagnosticSource晓东 ...
- centos 7 安装docker 常用指令
什么是docker l 使用最广泛的开源容器引擎 l 一种操作系统级的虚拟化技术 l 依赖于Linux内核特性:Namespace和Cgroups l 一个简单的应用程序打包工具 docker ...
- layui+tp5表单提交回调
layui 前段页面form表单提交数据如果监听表单提交 ,tp5后台操作完成后使用 $this->success('success'); 后前端的页面不会出现layui的layer弹窗提示su ...
- zookeeper-(单机,伪集群)
安装zookeeper(单机,伪集群): 1.下载 登陆zookeeper官网下载 https://zookeeper.apache.org/ 或者 https://mirror.bit.e ...
- js鼠标、键盘事件实例代码
1. 鼠标的哪个按键被点击? <html> <head> <script type="text/javascript"> function wh ...
- Python之dict字典详解
Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,字典是另 一种可变容器模型,且可存储任意类型对象.具有极快的查找速度. 字典是一种通过名字或者关键字 ...
- OpenCV计算机视觉学习(7)——图像金字塔(高斯金字塔,拉普拉斯金字塔)
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 本节 ...
- django—ORM相关
常用的QuerySet方法 1.all() 查询表中所有数据,返回一个QuerySet对象列表 2.filter() 查询满足条件的数据,返回一个QuerySet对象列表 3.get() 查询指定的数 ...
- Spring 缓存抽象
Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口来统一不同的缓存技术:并支 ...
- oracle 1day
1.主流数据库: 2.项目选择数据库的原则: 3.oracle 常用用户sys (sysdba系统管理员),system(sysoper系统操作员),scott(密码tiger) sys login: ...