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中数字以及算数运算符的相关使用
Oct 12 Python
使用Python编写简单的端口扫描器的实例分享
Dec 18 Python
Python之py2exe打包工具详解
Jun 14 Python
Python入门之三角函数atan2()函数详解
Nov 08 Python
对pandas中时间窗函数rolling的使用详解
Nov 28 Python
python之mock模块基本使用方法详解
Jun 27 Python
Python实现Singleton模式的方式详解
Aug 08 Python
Pytorch中的variable, tensor与numpy相互转化的方法
Oct 10 Python
python pycharm的安装及其使用
Oct 11 Python
在Python中画图(基于Jupyter notebook的魔法函数)
Oct 28 Python
PyCharm中配置PySide2的图文教程
Jun 18 Python
python实现商品进销存管理系统
May 30 Python
python将图片转为矢量图的方法步骤
Mar 30 #Python
一文搞懂如何实现Go 超时控制
golang中的空接口使用详解
Mar 30 #Python
在 Golang 中实现 Cache::remember 方法详解
Mar 30 #Python
Python离线安装openpyxl模块的步骤
解决Jupyter-notebook不弹出默认浏览器的问题
Python爬取科目四考试题库的方法实现
You might like
计算2000年01月01日起到指定日的天数
2006/10/09 PHP
PHP 面向对象 final类与final方法
2010/05/05 PHP
PHP var_dump遍历对象属性的函数与应用代码
2010/06/04 PHP
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
PHP中isset、empty的用法与区别示例详解
2020/11/05 PHP
简单的前端js+ajax 购物车框架(入门篇)
2011/10/29 Javascript
面向对象Javascript核心支持代码分享
2012/05/23 Javascript
关于extjs treepanel复选框选中父节点与子节点的问题
2013/04/02 Javascript
javascript中使用正则计算中文长度的例子
2014/04/29 Javascript
swtich/if...else的替代语句
2015/08/16 Javascript
jquery DataTable实现前后台动态分页
2017/06/17 jQuery
基于DOM节点删除之empty和remove的区别(详解)
2017/09/11 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
2018/06/01 Javascript
webpack手动配置React开发环境的步骤
2018/07/02 Javascript
Vue实现简易购物车页面
2020/12/30 Vue.js
[01:53]DOTA2超级联赛专访Zhou 五年职业青春成长
2013/05/29 DOTA
pandas 数据归一化以及行删除例程的方法
2018/11/10 Python
Django组件之cookie与session的使用方法
2019/01/10 Python
浅谈python3.x pool.map()方法的实质
2019/01/16 Python
用django设置session过期时间的方法解析
2019/08/05 Python
python tornado使用流生成图片的例子
2019/11/18 Python
AUC计算方法与Python实现代码
2020/02/28 Python
Python socket处理client连接过程解析
2020/03/18 Python
python 监控服务器是否有人远程登录(详细思路+代码)
2020/12/18 Python
html5基础教程常用技巧整理
2013/08/20 HTML / CSS
美特斯邦威官方商城:邦购网
2016/10/13 全球购物
美国专注于健康商品的网站:eVitamins
2017/01/23 全球购物
如何开启linux的ssh服务
2015/02/14 面试题
公司管理建议书范文
2014/03/12 职场文书
大学生党员自我评价范文
2014/04/09 职场文书
践行党的群众路线心得体会
2014/11/05 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
大学生国家助学金感谢信
2015/01/23 职场文书
医药公司采购员岗位职责
2015/04/03 职场文书
2015年预算员工作总结
2015/05/14 职场文书
合同范本之电脑出租
2019/08/13 职场文书