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设置socket代理的方法
Jan 14 Python
Python中函数的参数定义和可变参数用法实例分析
Jun 04 Python
Python连接mysql数据库的正确姿势
Feb 03 Python
Python开发之快速搭建自动回复微信公众号功能
Apr 22 Python
Python自动生产表情包
Mar 17 Python
Python实现针对含中文字符串的截取功能示例
Sep 22 Python
Python3解释器知识点总结
Feb 19 Python
在python下使用tensorflow判断是否存在文件夹的实例
Jun 10 Python
python pyinstaller打包exe报错的解决方法
Nov 02 Python
Django集成celery发送异步邮件实例
Dec 17 Python
python实现查找所有程序的安装信息
Feb 18 Python
Python如何实现机器人聊天
Sep 10 Python
python将图片转为矢量图的方法步骤
Mar 30 #Python
一文搞懂如何实现Go 超时控制
golang中的空接口使用详解
Mar 30 #Python
在 Golang 中实现 Cache::remember 方法详解
Mar 30 #Python
Python离线安装openpyxl模块的步骤
解决Jupyter-notebook不弹出默认浏览器的问题
Python爬取科目四考试题库的方法实现
You might like
MayFish PHP的MVC架构的开发框架
2009/08/13 PHP
PHP写UltraEdit插件脚本实现方法
2011/12/26 PHP
分享一段PHP制作的中文拼音首字母工具类
2014/12/11 PHP
php基于GD库画五星红旗的方法
2015/02/24 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
2015/06/17 PHP
PHP获取路径和目录的方法总结【必看篇】
2017/03/04 PHP
Yii框架实现图片上传的方法详解
2017/05/20 PHP
PHP7扩展开发教程之Hello World实现方法示例
2017/08/03 PHP
laravel 解决Validator使用中出现的问题
2019/10/25 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
2020/01/23 PHP
33个优秀的 jQuery 图片展示插件分享
2012/03/14 Javascript
javascripit实现密码强度检测代码分享
2013/12/12 Javascript
采用call方式实现js继承
2014/05/20 Javascript
详解JavaScript逻辑Not运算符
2015/12/04 Javascript
如何利用AngularJS打造一款简单Web应用
2015/12/05 Javascript
ie下js不执行的几种可能
2017/02/28 Javascript
Node.js dgram模块实现UDP通信示例代码
2017/09/26 Javascript
详解vue项目的构建,打包,发布全过程
2017/11/23 Javascript
vue中的 $slot 获取插槽的节点实例
2019/11/12 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
python在linux中输出带颜色的文字的方法
2014/06/19 Python
Python求导数的方法
2015/05/09 Python
在Python中使用sort()方法进行排序的简单教程
2015/05/21 Python
使用Python的urllib和urllib2模块制作爬虫的实例教程
2016/01/20 Python
Python 多线程实例详解
2017/03/25 Python
python 用正则表达式筛选文本信息的实例
2018/06/05 Python
python同义词替换的实现(jieba分词)
2020/01/21 Python
科尔士百货公司官网:Kohl’s
2016/07/11 全球购物
美国主要的特色咖啡和茶公司:Peet’s Coffee
2020/02/14 全球购物
迅雷Cued工作心得体会
2014/01/27 职场文书
护理专业优质毕业生自荐书
2014/01/31 职场文书
《观舞记》教学反思
2014/04/16 职场文书
个人收入证明范本
2014/09/18 职场文书
2015感人爱情寄语
2015/02/26 职场文书
2016优秀青年志愿者事迹材料
2016/02/25 职场文书
如何在C++中调用Python
2021/05/21 Python