python爬虫selenium和phantomJs使用方法解析


Posted in Python onAugust 08, 2019

1.selenum:三方库。可以实现让浏览器完成自动化的操作。

2.环境搭建

2.1 安装:

pip install selenium

2.2 获取浏览器的驱动程序

下载地址:

http://chromedriver.storage.googleapis.com/index.html

http://npm.taobao.org/mirrors/chromedriver/

浏览器版本和驱动版本的对应关系表:

chromedriver版本 支持的Chrome版本
v2.46 v71-73
v2.45 v70-72
v2.44 v69-71
v2.43 v69-71
v2.42 v68-70
v2.41 v67-69
v2.40 v66-68
v2.39 v66-68
v2.38 v65-67
v2.37 v64-66
v2.36 v63-65
v2.35 v62-64
v2.34 v61-63
v2.33 v60-62
v2.32 v59-61
v2.31 v58-60
v2.30 v58-60
v2.29 v56-58
v2.28 v55-57
v2.27 v54-56
v2.26 v53-55
v2.25 v53-55
v2.24 v52-54
v2.23 v51-53
v2.22 v49-52
v2.21 v46-50
v2.20 v43-48
v2.19 v43-47
v2.18 v43-46
v2.17 v42-43
v2.13 v42-45
v2.15 v40-43
v2.14 v39-42
v2.13 v38-41
v2.12 v36-40
v2.11 v36-40
v2.10 v33-36
v2.9 v31-34
v2.8 v30-33
v2.7 v30-33
v2.6 v29-32
v2.5 v29-32
v2.4 v29-32

所有chromedriver均可在下面链接中下载到:

http://chromedriver.storage.googleapis.com/index.html 

现在有一点好的是出了按照chrome版本对应的driver,直接按照浏览器版本去找对应的driver(只对应大版本就行),不用再费心去对应了,大家可以尝试一下

python爬虫selenium和phantomJs使用方法解析

有些同学说下不了,到taobao下也是可以的:

http://npm.taobao.org/mirrors/chromedriver/

定位元素的8种方式:

#使用下面的方法,查找指定的元素进行操作即可
find_element_by_id 根据id找节点
find_elements_by_name 根据name找
find_elements_by_xpath 根据xpath查找
find_elements_by_tag_name 根据标签名找
find_elements_by_class_name 根据class名字查找
# 通过id定位:
dr.find_element_by_id("kw")

# 通过name定位:
dr.find_element_by_name("wd")

# 通过class name定位:
dr.find_element_by_class_name("s_ipt")

# 通过tag name定位:
dr.find_element_by_tag_name("input")

# 通过xpath定位,xpath定位有N种写法,这里列几个常用写法:
dr.find_element_by_xpath("//*[@id='kw']")
dr.find_element_by_xpath("//*[@name='wd']")
dr.find_element_by_xpath("//input[@class='s_ipt']")
dr.find_element_by_xpath("/html/body/form/span/input")
dr.find_element_by_xpath("//span[@class='soutu-btn']/input")
dr.find_element_by_xpath("//form[@id='form']/span/input")
dr.find_element_by_xpath("//input[@id='kw' and @name='wd']")

# 通过css定位,css定位有N种写法,这里列几个常用写法:
dr.find_element_by_css_selector("#kw")
dr.find_element_by_css_selector("[name=wd]")
dr.find_element_by_css_selector(".s_ipt")
dr.find_element_by_css_selector("html > body > form > span > input")
dr.find_element_by_css_selector("span.soutu-btn> input#kw")
dr.find_element_by_css_selector("form#form > span > input")

接下来,我们的页面上有一组文本链接。

<a class="mnav" href="http://news.baidu.com" rel="external nofollow" name="tj_trnews">新闻</a>
<a class="mnav" href="http://www.hao123.com" rel="external nofollow" name="tj_trhao123">hao123</a>
# 通过link text定位:
dr.find_element_by_link_text("新闻")
dr.find_element_by_link_text("hao123")

# 通过partial link text定位:
dr.find_element_by_partial_link_text("新")
dr.find_element_by_partial_link_text("hao")
dr.find_element_by_partial_link_text("123")

Selenium库下webdriver模块常用方法的使用

控制浏览器操作的一些方法

方法 说明

  • set_window_size() 设置浏览器的大小
  • back() 控制浏览器后退
  • forward() 控制浏览器前进
  • refresh() 刷新当前页面
  • clear() 清除文本
  • send_keys (value) 模拟按键输入
  • click() 单击元素
  • submit() 用于提交表单
  • get_attribute(name) 获取元素属性值
  • is_displayed() 设置该元素是否用户可见
  • size 返回元素的尺寸
  • text 获取元素的文本

---------------------

例子:

1.chrom浏览器自动搜索

from selenium import webdriver
from time import sleep
# 创建浏览器对象 驱动为浏览器的路径
bro = webdriver.Chrome("./chromedriver.exe")
url = "https://www.baidu.com"7 # 发送请求
bro.get(url)
# 让百度指定词条的搜索
text = bro.find_element_by_id('kw')
# 发送关键字
text.send_keys('python')
# 点击搜索按钮
button = bro.find_element_by_id('su')
button.click()
# 关闭浏览器
bro.quit()

2.phantomjs无界面浏览器,其自动化流程上述操作谷歌自动化流程一致。

from selenium import webdriver
from time import sleep
bro = webdriver.PhantomJS('E:/BaiduNetdiskDownload/爬虫课件/5. 动态数据加载
爬取\phantomjs?2.1.1?windows/bin/phantomjs.exe')
url = "https://www.baidu.com"
# 发送请求
bro.get(url)
bro.save_screenshot('./1.png')
# 让百度指定词条的搜索
text = bro.find_element_by_id('kw')
# 发送关键字
text.send_keys('python')
bro.save_screenshot('./2.png')
# 点击搜索按钮
button = bro.find_element_by_id('su')
button.click()
sleep(3)
bro.save_screenshot('./3.png')
# 关闭浏览器
bro.quit()

3.豆瓣网电影排行榜滚动条数据

from selenium import webdriver
from time import sleep3 url = 'https://movie.douban.com/typerank?type_name=%E5%96%9C%E5%89%A7&typ
e=24&interval_id=100:90&action='
bro = webdriver.PhantomJS('E:/BaiduNetdiskDownload/爬虫课件/5. 动态数据加载
爬取\phantomjs?2.1.1?windows/bin/phantomjs.exe')
bro.get(url)
sleep(1)
bro.save_screenshot("./1.png")
js = 'window.scrollTo(0,document.body.scrollHeight)'
# 执行js代码 滚动条
bro.execute_script(js)
sleep(1)
bro.save_screenshot('./2.png')
# 获取页面数据
page_source = bro.page_source
print(page_source)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python Django模板的使用方法(图文)
Nov 04 Python
Python读取键盘输入的2种方法
Jun 16 Python
python字符类型的一些方法小结
May 16 Python
使用PyInstaller将Python程序文件转换为可执行程序文件
Jul 08 Python
分享Python开发中要注意的十个小贴士
Aug 30 Python
python3.x上post发送json数据
Mar 04 Python
python实现图片彩色转化为素描
Jan 15 Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
Feb 25 Python
Python实现计算图像RGB均值方式
Jun 04 Python
python开发入门——set的使用
Sep 03 Python
全网最详细的PyCharm+Anaconda的安装过程图解
Jan 25 Python
python解析json数据
Apr 29 Python
Python2和3字符编码的区别知识点整理
Aug 08 #Python
Python编程中类与类的关系详解
Aug 08 #Python
python os.fork() 循环输出方法
Aug 08 #Python
对python中的os.getpid()和os.fork()函数详解
Aug 08 #Python
在Python中os.fork()产生子进程的例子
Aug 08 #Python
Python如何使用k-means方法将列表中相似的句子归类
Aug 08 #Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
Aug 08 #Python
You might like
php基础学习之变量的使用
2011/06/09 PHP
关于PHP内存溢出问题的解决方法
2013/06/25 PHP
PHP 之 写时复制介绍(Copy On Write)
2014/05/13 PHP
PHP 数组基本操作方法详解
2016/06/17 PHP
php 判断过去离现在几年的函数(实例代码)
2016/11/15 PHP
PHP基于IMAP收取邮件的方法示例
2017/08/07 PHP
js左侧三级菜单导航实例代码
2013/09/13 Javascript
nodejs通过phantomjs实现下载网页
2015/05/04 NodeJs
MVVM模式中ViewModel和View、Model有什么区别?
2015/06/19 Javascript
纯javascript实现自动发送邮件
2015/10/21 Javascript
如何使用jquery easyui创建标签组件
2015/11/18 Javascript
老生常谈javascript变量的命名规范和注释
2016/09/29 Javascript
Javascript之面向对象--方法
2016/12/02 Javascript
CentOS 安装NodeJS V8.0.0的方法
2017/06/15 NodeJs
详解用Node.js写一个简单的命令行工具
2018/03/01 Javascript
深入Node TCP模块的理解
2019/03/13 Javascript
利用python模拟sql语句对员工表格进行增删改查
2017/07/05 Python
Python时间的精准正则匹配方法分析
2017/08/17 Python
浅谈Python实现Apriori算法介绍
2017/12/20 Python
从运行效率与开发效率比较Python和C++
2018/12/14 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
利用Python模拟登录pastebin.com的实现方法
2019/07/12 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
2020/02/29 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
2020/03/28 Python
浅析Python 字符编码与文件处理
2020/09/24 Python
英国袜子店:Sock Shop
2017/01/11 全球购物
Melijoe美国官网:法国奢侈童装购物网站
2017/04/19 全球购物
澳洲在线厨具商店:Kitchen Style
2018/05/05 全球购物
Timberland澳大利亚官网:全球领先的户外品牌
2019/12/10 全球购物
大专学生推荐信范文
2013/11/19 职场文书
党员的自我评价范文
2014/01/02 职场文书
运动会开幕式邀请函
2014/01/22 职场文书
《美丽的公鸡》教学反思
2014/02/25 职场文书
岗位职责说明书
2014/05/07 职场文书
幼儿园六一儿童节活动方案
2014/08/26 职场文书
CSS 实现磨砂玻璃(毛玻璃)效果样式
2023/05/21 HTML / CSS