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实现的希尔排序算法实例
Jul 01 Python
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
Jan 20 Python
Python中的time模块与datetime模块用法总结
Jun 30 Python
完美解决Python 2.7不能正常使用pip install的问题
Jun 12 Python
对python pandas 画移动平均线的方法详解
Nov 28 Python
在python里从协程返回一个值的示例
Feb 19 Python
浅析Python 实现一个自动化翻译和替换的工具
Apr 14 Python
python安装pil库方法及代码
Jun 25 Python
python实现倒计时小工具
Jul 29 Python
TensorFLow 数学运算的示例代码
Apr 21 Python
Python正则re模块使用步骤及原理解析
Aug 18 Python
使用anaconda安装pytorch的实现步骤
Sep 03 Python
【超详细】八大排序算法的各项比较以及各自特点
pandas 操作 Excel操作总结
Mar 31 #Python
字典算法实现及操作 --python(实用)
如何利用python和DOS获取wifi密码
python爬虫selenium模块详解
Mar 30 #Python
python将图片转为矢量图的方法步骤
Mar 30 #Python
一文搞懂如何实现Go 超时控制
You might like
用PHP实现图象锐化代码
2007/06/14 PHP
php中文字母数字验证码实现代码
2008/04/25 PHP
php调用Google translate_tts api实现代码
2013/08/07 PHP
IE和firefox浏览器的event事件兼容性汇总
2009/12/06 Javascript
ExtJS TabPanel beforeremove beforeclose使用说明
2010/03/31 Javascript
我的javascript 函数链之演变
2011/04/07 Javascript
一个封装js代码-----展开收起效果示例
2013/07/03 Javascript
JS+CSS实现仿新浪微博搜索框的方法
2015/02/24 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
2015/04/14 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
2015/07/22 Javascript
canvas时钟效果
2017/02/16 Javascript
JS高仿抛物线加入购物车特效实现代码
2017/02/20 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
关于webpack代码拆分的解析
2017/07/20 Javascript
史上最全JavaScript常用的简写技巧(推荐)
2017/08/17 Javascript
使用vue-cli导入Element UI组件的方法
2018/05/16 Javascript
详解ES6 Symbol 的用途
2018/10/14 Javascript
JavaScript简单实现动态改变HTML内容的方法示例
2018/12/25 Javascript
vue实现条件叠加搜索的解决方法
2019/05/28 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
2019/09/10 Javascript
python获取从命令行输入数字的方法
2015/04/29 Python
itchat接口使用示例
2017/10/23 Python
python实现机器人行走效果
2018/01/29 Python
python2.6.6如何升级到python2.7.14
2018/04/08 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
python3中获取文件当前绝对路径的两种方法
2018/04/26 Python
Python测试网络连通性示例【基于ping】
2018/08/03 Python
Python:Numpy 求平均向量的实例
2019/06/29 Python
python双端队列原理、实现与使用方法分析
2019/11/27 Python
Python基本类型的连接组合和互相转换方式(13种)
2019/12/16 Python
python3代码输出嵌套式对象实例详解
2020/12/03 Python
英国家居用品和床上用品零售商:P&B Home
2020/01/16 全球购物
办公室副主任岗位职责
2013/11/25 职场文书
论语读书笔记
2015/06/26 职场文书
Python 数据科学 Matplotlib图库详解
2021/07/07 Python
Nginx跨域问题解析与解决
2022/08/05 Servers