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 相关文章推荐
zbar解码二维码和条形码示例
Feb 07 Python
python使用递归解决全排列数字示例
Feb 11 Python
Python的re模块正则表达式操作
May 25 Python
Python进度条实时显示处理进度的示例代码
Jan 30 Python
Sanic框架流式传输操作示例
Jul 18 Python
Python实现动态添加属性和方法操作示例
Jul 25 Python
Python3实现的简单工资管理系统示例
Mar 12 Python
Python OS模块实例详解
Apr 15 Python
利用Python绘制Jazz网络图的例子
Nov 21 Python
Python进程Multiprocessing模块原理解析
Feb 28 Python
Python中logging日志记录到文件及自动分割的操作代码
Aug 05 Python
pycharm最新激活码有效期至2100年(亲测可用)
Feb 05 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生成RSS文件类实例
2014/12/05 PHP
PHP连接SQL server数据库测试脚本运行实例
2020/08/24 PHP
jQuery的一些注意
2006/12/06 Javascript
js 页面输出值
2008/11/30 Javascript
JavaScript动态调整TextArea高度的代码
2010/12/28 Javascript
php对mongodb的扩展(初识如故)
2012/11/11 Javascript
早该知道的7个JavaScript技巧
2013/03/27 Javascript
javascript实现json页面分页实例代码
2014/02/20 Javascript
Javascript中innerHTML用法实例分析
2015/01/12 Javascript
javascript中错误使用var造成undefined
2016/03/31 Javascript
Angular.js回顾ng-app和ng-model使用技巧
2016/04/26 Javascript
AngularJS基础 ng-click 指令示例代码
2016/08/01 Javascript
Nodejs之http的表单提交
2017/07/07 NodeJs
浅谈Angular7 项目开发总结
2018/12/19 Javascript
webpack 代码分离优化快速指北
2019/05/18 Javascript
JavaScript进阶(三)闭包原理与用法详解
2020/05/09 Javascript
vue中实现点击变成全屏的多种方法
2020/09/27 Javascript
[48:37]EG vs OG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python操作csv文件实例详解
2017/07/31 Python
python and or用法详解
2019/06/26 Python
详解python中index()、find()方法
2019/08/29 Python
python集成开发环境配置(pycharm)
2020/02/14 Python
python 异步async库的使用说明
2020/05/04 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
2020/05/09 Python
Jack Rogers官网:美国经典的女性鞋靴品牌
2019/09/04 全球购物
加拿大户外探险购物网站:SAIL
2020/06/27 全球购物
测绘工程个人的自我评价
2013/11/23 职场文书
家长评语大全
2014/01/22 职场文书
销售团队口号大全
2014/06/06 职场文书
批评与自我批评总结
2014/10/17 职场文书
高校自主招生校长推荐信
2015/03/23 职场文书
2015年志愿者服务工作总结
2015/04/20 职场文书
工作迟到检讨书范文
2015/05/06 职场文书
家长对孩子的寒假评语
2015/10/09 职场文书
机械生产实习心得体会
2016/01/22 职场文书
使用react-virtualized实现图片动态高度长列表的问题
2021/05/28 Javascript