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处理csv数据的方法
Mar 11 Python
Python中的匿名函数使用简介
Apr 27 Python
Python实现的递归神经网络简单示例
Aug 11 Python
python和flask中返回JSON数据的方法
Mar 26 Python
Python在图片中插入大量文字并且自动换行
Jan 02 Python
详解Python3中setuptools、Pip安装教程
Jun 18 Python
利用python计算windows全盘文件md5值的脚本
Jul 27 Python
完美解决keras保存好的model不能成功加载问题
Jun 11 Python
Python 高效编程技巧分享
Sep 10 Python
只用50行Python代码爬取网络美女高清图片
Jun 02 Python
Python自动化爬取天眼查数据的实现
Jun 15 Python
浅谈Python数学建模之整数规划
Jun 23 Python
【超详细】八大排序算法的各项比较以及各自特点
pandas 操作 Excel操作总结
Mar 31 #Python
字典算法实现及操作 --python(实用)
如何利用python和DOS获取wifi密码
python爬虫selenium模块详解
Mar 30 #Python
python将图片转为矢量图的方法步骤
Mar 30 #Python
一文搞懂如何实现Go 超时控制
You might like
php创建sprite
2014/02/11 PHP
ThinkPHP之用户注册登录留言完整实例
2014/07/22 PHP
PHP错误Warning:mysql_query()解决方法
2015/10/24 PHP
javascript的函数、创建对象、封装、属性和方法、继承
2011/03/10 Javascript
js实现网站首页图片滚动显示
2013/02/04 Javascript
Javascript页面添加到收藏夹的简单方法
2013/08/07 Javascript
编写js扩展方法判断一个数组中是否包含某个元素
2013/11/08 Javascript
JavaScript中判断对象类型的几种方法总结
2013/11/11 Javascript
jQuery中ajax的load()方法用法实例
2014/12/26 Javascript
JavaScript使用slice函数获取数组部分元素的方法
2015/04/06 Javascript
jquery实现简单的自动播放幻灯片效果
2015/06/13 Javascript
JS实现可拖曳、可关闭的弹窗效果
2015/09/26 Javascript
Javascript DOM事件操作小结(监听鼠标点击、释放,悬停、离开等)
2017/01/20 Javascript
javascript+jQuery实现360开机时间显示效果
2017/11/03 jQuery
vue实现分页组件
2020/06/16 Javascript
js字符串处理之绝妙的代码
2019/04/05 Javascript
使用vue重构资讯页面的实例代码解析
2019/11/26 Javascript
node运行js获得输出的三种方式示例详解
2020/07/02 Javascript
[01:37]PWL S2开团时刻DAY1&2——这符有毒
2020/11/20 DOTA
Python ldap实现登录实例代码
2016/09/30 Python
Python内置模块hashlib、hmac与uuid用法分析
2018/02/12 Python
django 使用全局搜索功能的实例详解
2019/07/18 Python
Python字典生成式、集合生成式、生成器用法实例分析
2020/01/07 Python
python批量处理txt文件的实例代码
2020/01/13 Python
HTML5的Geolocation地理位置定位API使用教程
2016/05/12 HTML / CSS
html5新增的属性和废除的属性简要概述
2013/02/20 HTML / CSS
NFL墨西哥官方商店:Tienda NFL
2017/11/28 全球购物
优秀求职信范文分享
2013/12/19 职场文书
求职意向书范文
2014/04/01 职场文书
英语故事演讲稿
2014/04/29 职场文书
环保建议书100字
2014/05/14 职场文书
化学工程专业求职信
2014/08/10 职场文书
2016应届毕业生自荐信范文
2016/01/28 职场文书
2019年大学生学年自我鉴定!
2019/03/25 职场文书
postgresql 删除重复数据案例详解
2021/08/02 PostgreSQL
Windows Server 版本 20H2 于 8 月 9 日停止支持,Win10 版本 21H1 将于 12 月结束支
2022/07/23 数码科技