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实现rest请求api示例
Apr 22 Python
浅析python 内置字符串处理函数的使用方法
Jun 11 Python
在Python中使用PIL模块处理图像的教程
Apr 29 Python
使用Python读写文本文件及编写简单的文本编辑器
Mar 11 Python
python实现折半查找和归并排序算法
Apr 14 Python
微信跳一跳python辅助软件思路及图像识别源码解析
Jan 04 Python
Python lambda函数基本用法实例分析
Mar 16 Python
深入分析python数据挖掘 Json结构分析
Apr 21 Python
对Python中实现两个数的值交换的集中方法详解
Jan 11 Python
Python读写文件基础知识点
Jun 10 Python
python3 sorted 如何实现自定义排序标准
Mar 12 Python
Python中用xlwt制作表格实例讲解
Nov 05 Python
【超详细】八大排序算法的各项比较以及各自特点
pandas 操作 Excel操作总结
Mar 31 #Python
字典算法实现及操作 --python(实用)
如何利用python和DOS获取wifi密码
python爬虫selenium模块详解
Mar 30 #Python
python将图片转为矢量图的方法步骤
Mar 30 #Python
一文搞懂如何实现Go 超时控制
You might like
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
给初学者的30条PHP最佳实践(荒野无灯)
2011/08/02 PHP
浅析51个PHP处理字符串的函数
2013/08/02 PHP
PHP中创建和验证哈希的简单方法实探
2015/07/06 PHP
php 防止表单重复提交两种实现方法
2016/11/03 PHP
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
2010/03/16 Javascript
利用JQuery动画制作滑动菜单项效果实现步骤及代码
2013/02/07 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
新增加的内容是如何将div的scrollbar自动移动最下面
2014/01/02 Javascript
SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
2015/12/10 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
2016/01/08 Javascript
JS实现中国公民身份证号码有效性验证
2017/02/20 Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
2017/07/11 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
浅谈vue-router路由切换 组件重用挖下的坑
2019/11/01 Javascript
three.js 制作动态二维码的示例代码
2020/07/31 Javascript
[46:50]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python 字符串定义
2009/09/25 Python
Python决策树和随机森林算法实例详解
2018/01/30 Python
详解Python爬取并下载《电影天堂》3千多部电影
2019/04/26 Python
python远程邮件控制电脑升级版
2019/05/23 Python
Python时间序列缺失值的处理方法(日期缺失填充)
2019/08/11 Python
python的faker库用法
2019/11/28 Python
keras获得model中某一层的某一个Tensor的输出维度教程
2020/01/24 Python
Python如何访问字符串中的值
2020/02/09 Python
Python使用socket_TCP实现小文件下载功能
2020/10/09 Python
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
英国和国际包裹递送:ParcelCompare
2019/08/26 全球购物
Big Green Smile法国:领先的英国有机和天然产品在线商店
2021/01/02 全球购物
结构工程研究生求职信
2013/10/13 职场文书
水电工岗位职责
2014/02/12 职场文书
法律进机关实施方案
2014/03/12 职场文书
领导干部保密承诺书
2014/08/30 职场文书
逃课检讨书怎么写
2015/01/01 职场文书
创业计划书之熟食店
2019/10/16 职场文书
Win11开始菜单添加休眠选项
2022/04/19 数码科技