python爬虫--selenium模块


Posted in Python onMarch 31, 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 相关文章推荐
详谈python http长连接客户端
Jun 12 Python
Python3解决棋盘覆盖问题的方法示例
Dec 07 Python
解决Python下imread,imwrite不支持中文的问题
Dec 05 Python
python3.6使用urllib完成下载的实例
Dec 19 Python
python DataFrame 取差集实例
Jan 30 Python
Python中将两个或多个list合成一个list的方法小结
May 12 Python
使用python模拟命令行终端的示例
Aug 13 Python
Python3实现将一维数组按标准长度分隔为二维数组
Nov 29 Python
python里的单引号和双引号的有什么作用
Jun 17 Python
Python3交互式shell ipython3安装及使用详解
Jul 11 Python
Python-typing: 类型标注与支持 Any类型详解
May 10 Python
使用pycharm运行flask应用程序的详细教程
Jun 07 Python
【超详细】八大排序算法的各项比较以及各自特点
pandas 操作 Excel操作总结
Mar 31 #Python
字典算法实现及操作 --python(实用)
如何利用python和DOS获取wifi密码
python爬虫selenium模块详解
Mar 30 #Python
python将图片转为矢量图的方法步骤
Mar 30 #Python
一文搞懂如何实现Go 超时控制
You might like
用IE远程创建Mysql数据库的简易程序
2006/10/09 PHP
PHP url 加密解密函数代码
2011/08/26 PHP
PHP嵌套输出缓冲代码实例
2015/05/12 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
2016/11/22 PHP
php将字符串转换为数组实例讲解
2020/05/05 PHP
关于使用 jBox 对话框的提交不能弹出问题解决方法
2012/11/07 Javascript
js读取被点击次数的简单实例(从数据库中读取)
2014/03/07 Javascript
将JavaScript的jQuery库中表单转化为JSON对象的方法
2015/11/17 Javascript
基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用
2016/05/12 Javascript
canvas 绘制圆形时钟
2017/02/22 Javascript
移动端刮刮乐的实现方式(js+HTML5)
2017/03/23 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
2017/06/28 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
2017/09/06 Javascript
AngularJS 仿微信图片手势缩放的实例
2017/09/28 Javascript
利用npm 安装删除模块的方法
2018/05/15 Javascript
深入理解vue中的slot与slot-scope
2019/04/22 Javascript
小程序跳转H5页面的方法步骤
2020/03/06 Javascript
[02:47]2018年度DOTA2最佳辅助位选手4号位-完美盛典
2018/12/17 DOTA
Python中使用ConfigParser解析ini配置文件实例
2014/08/30 Python
python 根据时间来生成唯一的字符串方法
2019/01/14 Python
python三大神器之fabric使用教程
2019/06/10 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
2019/10/24 Python
弄清Pytorch显存的分配机制
2020/12/10 Python
Python3 用matplotlib绘制sigmoid函数的案例
2020/12/11 Python
结合CSS3的新特性来总结垂直居中的实现方法
2016/05/30 HTML / CSS
Html5页面获取微信公众号的openid的方法
2020/05/12 HTML / CSS
世界上最好的精品店:Shoptiques
2018/02/05 全球购物
Keds加拿大官网:购买帆布运动鞋和皮鞋
2019/09/26 全球购物
运动会通讯稿500字
2014/02/20 职场文书
2014年大学庆元旦迎新年活动方案
2014/03/09 职场文书
师德建设实施方案
2014/03/21 职场文书
个人安全生产承诺书
2014/05/22 职场文书
计算机毕业生自荐信
2014/06/12 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
2016年教师新年寄语
2015/08/18 职场文书
《工作是最好的修行》读后感3篇
2019/12/13 职场文书