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 相关文章推荐
pyside写ui界面入门示例
Jan 22 Python
python实现ftp客户端示例分享
Feb 17 Python
Python使用poplib模块和smtplib模块收发电子邮件的教程
Jul 02 Python
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
Feb 23 Python
python 限制函数调用次数的实例讲解
Apr 21 Python
python3实现域名查询和whois查询功能
Jun 21 Python
Django文件存储 自己定制存储系统解析
Aug 02 Python
在pytorch中对非叶节点的变量计算梯度实例
Jan 10 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
Apr 12 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
Apr 29 Python
如何通过Python3和ssl实现加密通信功能
May 09 Python
python 如何区分return和yield
Sep 22 Python
【超详细】八大排序算法的各项比较以及各自特点
pandas 操作 Excel操作总结
Mar 31 #Python
字典算法实现及操作 --python(实用)
如何利用python和DOS获取wifi密码
python爬虫selenium模块详解
Mar 30 #Python
python将图片转为矢量图的方法步骤
Mar 30 #Python
一文搞懂如何实现Go 超时控制
You might like
雄兵连三大错觉:凯莎没了,凉冰阵亡了,华烨觉得自己又行了
2020/04/09 国漫
PHP中通过加号合并数组的一个简单方法分享
2011/01/27 PHP
php创建sprite
2014/02/11 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
2016/03/11 PHP
php利用gd库为图片添加水印
2016/11/09 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
javascript中获取选中对象的类型
2007/04/02 Javascript
js获取url参数的使用扩展实例
2007/12/29 Javascript
Javascript下IE与Firefox下的差异兼容写法总结
2010/06/18 Javascript
在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
2011/12/20 Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
2012/08/01 Javascript
jQuery插件pagination实现分页特效
2015/04/12 Javascript
跟我学习javascript创建对象(类)的8种方法
2015/11/20 Javascript
浏览器兼容的JS写法总结
2016/04/27 Javascript
JQuery和html+css实现带小圆点和左右按钮的轮播图实例
2017/07/22 jQuery
JavaScript实现QQ列表展开收缩扩展功能
2017/10/30 Javascript
ES6/JavaScript使用技巧分享
2017/12/14 Javascript
小程序清理本地缓存的方法
2018/08/17 Javascript
在Vue组件中获取全局的点击事件方法
2018/09/06 Javascript
微信小程序 组件的外部样式externalClasses使用详解
2019/09/06 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
vue-amap根据地址回显地图并mark的操作
2020/11/03 Javascript
python实现的用于搜索文件并进行内容替换的类实例
2015/06/28 Python
Python在图片中插入大量文字并且自动换行
2019/01/02 Python
Django实现学生管理系统
2019/02/26 Python
Python实现截取PDF文件中的几页代码实例
2019/03/11 Python
python机器人运动范围问题的解答
2019/04/29 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
2019/09/10 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
2019/11/11 Python
python读取Kafka实例
2019/12/23 Python
意大利和国际最佳时尚品牌:Drestige
2019/12/28 全球购物
澳大利亚家具商店:Freedom
2020/12/17 全球购物
小学开学寄语
2014/01/19 职场文书
大学中国梦演讲稿
2014/04/23 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
学雷锋团日活动总结
2015/05/06 职场文书