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 urlopen()函数 示例分享
Jun 12 Python
Python列表生成器的循环技巧分享
Mar 06 Python
Python的设计模式编程入门指南
Apr 02 Python
python使用wmi模块获取windows下的系统信息 监控系统
Oct 27 Python
Python实现在线音乐播放器
Mar 03 Python
在CentOS6上安装Python2.7的解决方法
Jan 09 Python
完美解决安装完tensorflow后pip无法使用的问题
Jun 11 Python
python读取Excel实例详解
Aug 17 Python
python排序函数sort()与sorted()的区别
Sep 18 Python
JupyterNotebook设置Python环境的方法步骤
Dec 03 Python
python使用nibabel和sitk读取保存nii.gz文件实例
Jul 01 Python
python3字符串输出常见面试题总结
Dec 01 Python
python将图片转为矢量图的方法步骤
Mar 30 #Python
一文搞懂如何实现Go 超时控制
golang中的空接口使用详解
Mar 30 #Python
在 Golang 中实现 Cache::remember 方法详解
Mar 30 #Python
Python离线安装openpyxl模块的步骤
解决Jupyter-notebook不弹出默认浏览器的问题
Python爬取科目四考试题库的方法实现
You might like
使用php将某个目录下面的所有文件罗列出来的方法详解
2013/06/21 PHP
php+mysql大量用户登录解决方案分析
2014/12/29 PHP
symfony表单与页面实现技巧
2015/01/26 PHP
PHP经典面试题之设计模式(经常遇到)
2015/10/15 PHP
JQUERY复选框CHECKBOX全选,取消全选
2008/08/30 Javascript
浅谈Javascript面向对象编程
2011/11/15 Javascript
js函数内变量的作用域分析
2015/01/12 Javascript
JavaScript实现页面跳转的几种常用方式
2015/11/28 Javascript
jQuery ajax分页插件实例代码
2016/01/27 Javascript
jQuery实现的精美平滑二级下拉菜单效果代码
2016/03/28 Javascript
浅析jQuery中使用$所引发的问题
2016/05/29 Javascript
基于jQuery实现弹出可关闭遮罩提示框实例代码
2016/07/18 Javascript
JS多物体实现缓冲运动效果示例
2016/12/20 Javascript
解决vue中修改export default中脚本报一大堆错的问题
2018/08/27 Javascript
VUE2.0+ElementUI2.0表格el-table实现表头扩展el-tooltip
2018/11/30 Javascript
Vue2 添加数据可视化支持的方法步骤
2019/01/02 Javascript
详解从react转职到vue开发的项目准备
2019/01/14 Javascript
微信小程序canvas绘制圆角base64图片的实现
2019/08/18 Javascript
vue使用echarts实现水平柱形图实例
2020/09/09 Javascript
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
2021/02/23 Vue.js
[09:40]DAC2018 4.5 SOLO赛 MidOne vs Miracle
2018/04/06 DOTA
Python中模块string.py详解
2017/03/12 Python
恢复百度云盘本地误删的文件脚本(简单方法)
2017/10/21 Python
Python中的并发处理之asyncio包使用的详解
2018/04/03 Python
使用Matplotlib 绘制精美的数学图形例子
2019/12/13 Python
Pytorch之contiguous的用法
2019/12/31 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
2020/03/27 Python
jupyter notebook 增加kernel教程
2020/04/10 Python
Lookfantastic香港官网:英国知名美妆购物网站
2018/06/19 全球购物
Mankind美国/加拿大:英国领先的男士美容护发用品公司
2018/12/05 全球购物
澳洲网红粉泥面膜:Sand & Sky
2019/08/13 全球购物
Bath & Body Works阿联酋:在线购买沐浴和身体用品
2021/02/27 全球购物
师范大学毕业自我鉴定
2013/11/21 职场文书
汇源肾宝广告词
2014/03/20 职场文书
公司联欢会策划方案
2014/05/19 职场文书
在CSS中映射鼠标位置并实现通过鼠标移动控制页面元素效果(实例代码)
2021/04/22 HTML / CSS