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的Template使用指南
Sep 11 Python
在Python中使用Neo4j数据库的教程
Apr 16 Python
python实现多线程的方式及多条命令并发执行
Jun 07 Python
Python爬取网页中的图片(搜狗图片)详解
Mar 23 Python
Python实现PS滤镜的万花筒效果示例
Jan 23 Python
Python数据报表之Excel操作模块用法分析
Mar 11 Python
matplotlib绘制多个子图(subplot)的方法
Dec 03 Python
python3读取autocad图形文件.py实例
Jun 05 Python
python openssl模块安装及用法
Dec 06 Python
python 视频下载神器(you-get)的具体使用
Jan 06 Python
Django 实现jwt认证的示例
Apr 30 Python
Python机器学习之PCA降维算法详解
May 19 Python
python将图片转为矢量图的方法步骤
Mar 30 #Python
一文搞懂如何实现Go 超时控制
golang中的空接口使用详解
Mar 30 #Python
在 Golang 中实现 Cache::remember 方法详解
Mar 30 #Python
Python离线安装openpyxl模块的步骤
解决Jupyter-notebook不弹出默认浏览器的问题
Python爬取科目四考试题库的方法实现
You might like
怎样在UNIX系统下安装php3
2006/10/09 PHP
php代码运行时间查看类代码分享
2011/08/06 PHP
php实现的九九乘法口诀表简洁版
2014/07/28 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
2016/01/04 PHP
php实现的二叉树遍历算法示例
2017/06/15 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
jquery异步调用页面后台方法‏(asp.net)
2011/03/01 Javascript
Javascript实现页面跳转的几种方式分享
2013/10/26 Javascript
用unescape反编码得出汉字示例
2014/04/24 Javascript
微信小程序 框架详解及实例应用
2016/09/26 Javascript
canvas实现绘制吃豆鱼效果
2017/01/12 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
2017/01/23 Javascript
vue如何实现observer和watcher源码解析
2017/03/09 Javascript
js实现延迟加载的几种方法
2017/04/24 Javascript
JS组件系列之MVVM组件 vue 30分钟搞定前端增删改查
2017/04/28 Javascript
详解Vue中过度动画效果应用
2017/05/25 Javascript
JS判断数组那点事
2017/10/10 Javascript
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
mui上拉加载更多下拉刷新数据的封装过程
2017/11/03 Javascript
基于js 字符串indexof与search方法的区别(详解)
2017/12/04 Javascript
Angular使用Restful的增删改
2018/12/28 Javascript
微信小程序云开发 搭建一个管理小程序
2019/05/17 Javascript
Typescript 中的 interface 和 type 到底有什么区别详解
2019/06/18 Javascript
跟老齐学Python之再深点,更懂list
2014/09/20 Python
Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
2015/04/24 Python
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
Python 的描述符 descriptor详解
2016/02/27 Python
python中uuid模块实例浅析
2020/12/29 Python
需要知道的CSS3动画技术
2010/01/01 HTML / CSS
英国著名的茶叶品牌:Whittard of Chelsea
2016/09/22 全球购物
保送生自荐信范文
2013/10/06 职场文书
《泉水》教学反思
2014/04/11 职场文书
竞选大队长演讲稿
2014/04/29 职场文书
师德师风自我评价范文
2014/09/11 职场文书
使用nginx动态转换图片大小生成缩略图
2021/03/31 Servers
mysql5.5中文乱码问题解决的有用方法
2022/05/30 MySQL