python爬虫selenium模块详解


Posted in Python onMarch 30, 2021

selenium模块

selenium基本概念

selenium优势

  • 便捷的获取网站中动态加载的数据
  • 便捷实现模拟登陆

selenium使用流程:

1.环境安装:pip install selenium

2.下载一个浏览器的驱动程序(谷歌浏览器)

3.实例化一个浏览器对象

基本使用

代码

from selenium import webdriver
from lxml import etree
from time import sleep

if __name__ == '__main__':

 bro = webdriver.Chrome(r"E:\google\Chrome\Application\chromedriver.exe")
 bro.get(url='http://scxk.nmpa.gov.cn:81/xk/')

 page_text = bro.page_source
 tree = etree.HTML(page_text)
 li_list = tree.xpath('//*[@id="gzlist"]/li')
 for li in li_list:
  name = li.xpath('./dl/@title')[0]
  print(name)
 sleep(5)
 bro.quit()

基于浏览器自动化的操作

代码

#编写基于浏览器自动化的操作代码

- 发起请求: get(url)

- 标签定位: find系列的方法

- 标签交互: send_ keys( 'xxx' )

- 执行js程序: excute_script('jsCod')

- 前进,后退: back(),forward( )

- 关闭浏览器: quit()

代码

https://www.taobao.com/

from selenium import webdriver
from time import sleep

bro = webdriver.Chrome(executable_path=r"E:\google\Chrome\Application\chromedriver.exe")

bro.get(url='https://www.taobao.com/')

#标签定位
search_input = bro.find_element_by_id('q')
sleep(2)
#执行一组js代码,使得滚轮向下滑动
bro.execute_script('window.scrollTo(0,document.body.scrollHeight)')
sleep(2)
#标签交互
search_input.send_keys('女装')
button = bro.find_element_by_class_name('btn-search')
button.click()

bro.get('https://www.baidu.com')
sleep(2)
bro.back()
sleep(2)
bro.forward()
sleep(5)
bro.quit()

selenium处理iframe:

- 如果定位的标签存在于iframe标签之中,则必须使用switch_to.frame(id)

- 动作链(拖动) : from selenium. webdriver import ActionChains
	- 实例化一个动作链对象: action = ActionChains (bro)
	- click_and_hold(div) :长按且点击操作
	- move_by_offset(x,y)
	- perform( )让动作链立即执行
	- action.release( )释放动作链对象

代码

https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable

from selenium import webdriver
from time import sleep
from selenium.webdriver import ActionChains
bro = webdriver.Chrome(executable_path=r"E:\google\Chrome\Application\chromedriver.exe")

bro.get('https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')

bro.switch_to.frame('iframeResult')

div = bro.find_element_by_id('draggable')

#动作链
action = ActionChains(bro)
action.click_and_hold(div)

for i in range(5):
 action.move_by_offset(17,0).perform()
 sleep(0.3)

#释放动作链
action.release()

bro.quit()

selenium模拟登陆QQ空间

代码

https://qzone.qq.com/

from selenium import webdriver
from time import sleep


bro = webdriver.Chrome(executable_path=r"E:\google\Chrome\Application\chromedriver.exe")
bro.get('https://qzone.qq.com/')
bro.switch_to.frame("login_frame")

switcher = bro.find_element_by_id('switcher_plogin')
switcher.click()

user_tag = bro.find_element_by_id('u')
password_tag = bro.find_element_by_id('p')
user_tag.send_keys('1234455')
password_tag.send_keys('qwer123')
sleep(1)

but = bro.find_element_by_id('login_button')
but.click()

无头浏览器和规避检测

代码

from selenium import webdriver
from time import sleep
#实现无可视化界面
from selenium.webdriver.chrome.options import Options
#实现规避检测
from selenium.webdriver import ChromeOptions

#实现无可视化界面
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
#实现规避检测
option = ChromeOptions()
option.add_experimental_option('excludeSwitches',['enable-automation'])

bro = webdriver.Chrome(executable_path=r"E:\google\Chrome\Application\chromedriver.exe",chrome_options=chrome_options,options=option)

bro.get('https://www.baidu.com')
print(bro.page_source)
sleep(2)
bro.quit()

到此这篇关于python爬虫selenium模块详解的文章就介绍到这了,更多相关python爬虫selenium模块内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
简单谈谈python中的多进程
Nov 06 Python
python实现求最长回文子串长度
Jan 22 Python
python多线程之事件Event的使用详解
Apr 27 Python
Python生成器定义与简单用法实例分析
Apr 30 Python
python批量修改文件编码格式的方法
May 31 Python
python json.loads兼容单引号数据的方法
Dec 19 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
Jun 26 Python
pygame实现五子棋游戏
Oct 29 Python
Python:type、object、class与内置类型实例
Dec 25 Python
Python @property原理解析和用法实例
Feb 11 Python
PyQt5实现画布小程序
May 30 Python
Python工程师必考的6个经典面试题
Jun 28 Python
python将图片转为矢量图的方法步骤
Mar 30 #Python
一文搞懂如何实现Go 超时控制
golang中的空接口使用详解
Mar 30 #Python
在 Golang 中实现 Cache::remember 方法详解
Mar 30 #Python
Python离线安装openpyxl模块的步骤
解决Jupyter-notebook不弹出默认浏览器的问题
Python爬取科目四考试题库的方法实现
You might like
如何使用FireFox插件FirePHP调试PHP
2013/07/23 PHP
php函数间的参数传递(值传递/引用传递)
2013/09/23 PHP
Yii实现显示静态页的方法
2016/04/25 PHP
PHP连接MySQL数据库并以json格式输出
2018/05/21 PHP
php屏蔽错误及提示的方法
2020/05/10 PHP
JavaScript中的私有成员
2006/09/18 Javascript
使用JQuery进行跨域请求
2010/01/25 Javascript
Js 刷新框架页的代码
2010/04/13 Javascript
jquery监控数据是否变化(修正版)
2011/04/12 Javascript
Javascript实现的类似Google的Div拖动效果代码
2011/08/09 Javascript
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
2014/09/26 NodeJs
js与css实现弹出层覆盖整个页面的方法
2014/12/13 Javascript
浅析Javascript ES6新增值比较函数Object.is
2016/08/24 Javascript
Node.js包管理器Yarn的入门介绍与安装
2016/10/17 Javascript
AngularJs基于角色的前端访问控制的实现
2016/11/07 Javascript
JavaScript队列函数和异步执行详解
2017/06/19 Javascript
JavaScript实现三级联动效果
2017/07/15 Javascript
vuejs router history 配置到iis的方法
2018/09/20 Javascript
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
在Python中实现shuffle给列表洗牌
2018/11/08 Python
Python 通过调用接口获取公交信息的实例
2018/12/17 Python
python爬虫 2019中国好声音评论爬取过程解析
2019/08/26 Python
Python 变量的创建过程详解
2019/09/02 Python
解决keras模型保存h5文件提示无此目录问题
2020/07/01 Python
基于HTML5实现类似微信手机摇一摇功能(计算摇动次数)
2017/07/24 HTML / CSS
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
英国天然有机美容护肤品:Neal’s Yard Remedies
2018/05/05 全球购物
环境工程毕业生自荐信
2013/11/17 职场文书
带香烟到学校抽的检讨书
2014/09/25 职场文书
群众路线教育实践活动对照检查材料思想汇报(副处级领导)
2014/10/04 职场文书
2014年小学英语教师工作总
2014/12/03 职场文书
2015年社区消防安全工作总结
2015/10/14 职场文书
学生会部长竞选稿
2015/11/19 职场文书
2016年清明节期间群众祭祀活动工作总结
2016/04/01 职场文书
公文写作:新员工转正申请书范本3篇!
2019/08/07 职场文书
HTML+JS实现在线朗读器
2022/02/15 Javascript