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 相关文章推荐
Centos Python2 升级到Python3的简单实现
Jun 21 Python
使用Python编写一个最基础的代码解释器的要点解析
Jul 12 Python
教你用python3根据关键词爬取百度百科的内容
Aug 18 Python
Python加密方法小结【md5,base64,sha1】
Jul 13 Python
python机器学习理论与实战(六)支持向量机
Jan 19 Python
对python中的six.moves模块的下载函数urlretrieve详解
Dec 19 Python
python基础教程之while循环
Aug 14 Python
python 实现让字典的value 成为列表
Dec 16 Python
pycharm 更改创建文件默认路径的操作
Feb 15 Python
python能做哪方面的工作
Jun 15 Python
基于Python+QT的gui程序开发实现
Jul 03 Python
Python实现自动玩连连看的脚本分享
Apr 04 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查询快递信息的方法
2015/03/07 PHP
php获取网页里所有图片并存入数组的方法
2015/04/06 PHP
php断点续传之文件分割合并详解
2016/12/13 PHP
Extjs中使用extend(js继承) 的代码
2012/03/15 Javascript
jquery获取css中的选择器(实例讲解)
2013/12/02 Javascript
node.js中使用q.js实现api的promise化
2014/09/17 Javascript
基于JS2Image实现圣诞树代码
2015/12/24 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
canvas滤镜效果实现代码
2017/02/06 Javascript
详解.vue文件中监听input输入事件(oninput)
2017/09/19 Javascript
Vue+SpringBoot开发V部落博客管理平台
2017/12/27 Javascript
vue实现简单loading进度条
2018/06/06 Javascript
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
jQuery实现的简单日历组件定义与用法示例
2018/12/24 jQuery
小程序自定义日历效果
2018/12/29 Javascript
基于JS实现视频上传显示进度条
2020/05/12 Javascript
深入理解 ES6中的 Reflect用法
2020/07/18 Javascript
vue实现单一筛选、删除筛选条件
2020/10/26 Javascript
python实现巡检系统(solaris)示例
2014/04/02 Python
python实现跨文件全局变量的方法
2014/07/07 Python
Python实现读取目录所有文件的文件名并保存到txt文件代码
2014/11/22 Python
python分析网页上所有超链接的方法
2015/05/08 Python
Python中pandas模块DataFrame创建方法示例
2018/06/20 Python
Python绘制股票移动均线的实例
2019/08/24 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
postman传递当前时间戳实例详解
2019/09/14 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
2020/03/14 Python
python 判断一组数据是否符合正态分布
2020/09/23 Python
Java语言的优势
2015/01/10 面试题
护理个人求职信范文
2014/01/08 职场文书
化工专业大学生职业生涯规划书
2014/01/14 职场文书
学校联谊活动方案
2014/02/15 职场文书
计算机专业职业规划
2014/02/28 职场文书
留守儿童工作方案
2014/06/02 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
中国合伙人观后感
2015/06/02 职场文书