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实现定时播放mp3
Mar 29 Python
简单了解什么是神经网络
Dec 23 Python
python 获取url中的参数列表实例
Dec 18 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
Jul 01 Python
python实现简单成绩录入系统
Sep 19 Python
Docker部署Python爬虫项目的方法步骤
Jan 19 Python
python爬虫开发之urllib模块详细使用方法与实例全解
Mar 09 Python
python目标检测给图画框,bbox画到图上并保存案例
Mar 10 Python
Python正则表达式如何匹配中文
May 27 Python
python中的错误如何查看
Jul 08 Python
python中os.remove()用法及注意事项
Jan 31 Python
python神经网络ResNet50模型
May 06 Python
【超详细】八大排序算法的各项比较以及各自特点
pandas 操作 Excel操作总结
Mar 31 #Python
字典算法实现及操作 --python(实用)
如何利用python和DOS获取wifi密码
python爬虫selenium模块详解
Mar 30 #Python
python将图片转为矢量图的方法步骤
Mar 30 #Python
一文搞懂如何实现Go 超时控制
You might like
模仿OSO的论坛(四)
2006/10/09 PHP
使用 php4 加速 web 传输
2006/10/09 PHP
PHP base64+gzinflate压缩编码和解码代码
2008/10/03 PHP
php上传apk后自动提取apk包信息的使用(示例下载)
2013/04/26 PHP
PHP实现加强版加密解密类实例
2015/07/29 PHP
cnblogs中在闪存中屏蔽某人的实现代码
2010/11/14 Javascript
JavaScript使用pop方法移除数组最后一个元素用法实例
2015/04/06 Javascript
JS转换HTML转义符的方法
2016/08/24 Javascript
JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)
2016/10/27 Javascript
vue组件实例解析
2017/01/10 Javascript
浅谈通过JS拦截 pushState和replaceState事件
2017/07/21 Javascript
vue项目中使用百度地图的方法
2018/06/08 Javascript
原生JavaScript实现remove()和recover()功能示例
2018/07/24 Javascript
详解微信小程序实现仿微信聊天界面(各种细节处理)
2019/02/17 Javascript
微信小程序npm引入vant-weapp的踩坑记录
2019/08/01 Javascript
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
layui 实现table翻页滚动条位置保持不变的例子
2019/09/05 Javascript
python基础教程之自定义函数介绍
2014/08/29 Python
举例讲解如何在Python编程中进行迭代和遍历
2016/01/19 Python
centos6.4下python3.6.1安装教程
2017/07/21 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
2018/07/10 Python
python实现遍历文件夹修改文件后缀
2018/08/28 Python
python实现ip地址查询经纬度定位详解
2019/08/30 Python
Python sqlalchemy时间戳及密码管理实现代码详解
2020/08/01 Python
python des,aes,rsa加解密的实现
2021/01/16 Python
python-jwt用户认证食用教学的实现方法
2021/01/19 Python
使用Html5 Stream开发实时监控系统
2020/06/02 HTML / CSS
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
瑞典灯具和照明网上商店:Lamp24.se
2018/03/17 全球购物
个人银行贷款担保书
2014/04/01 职场文书
北京奥运会口号
2014/06/21 职场文书
工作保证书怎么写
2015/02/28 职场文书
酒店总经理岗位职责
2015/04/01 职场文书
时尚女魔头观后感
2015/06/04 职场文书
教你用python控制安卓手机
2021/05/13 Python
Spring this调用当前类方法无法拦截的示例代码
2022/03/20 Java/Android