selenium模块的基本使用

  • 下载路径:http://chromedriver.storage.googleapis.com/index.html

  • 驱动程序和浏览器的映射关系:http://blog.csdn.net/huilan_same/article/details/51896672

3、实例化一个浏览器对象

通过软件自动化打开浏览器,爬取想要爬取页面数据

导包

from lxml import etree

from time import sleep

导入动作链对应的类

from selenium import webdriver

实例化一个浏览器对象(传入浏览器的驱动成)

bro = webdriver.Chrome(executable_path=‘./chromedriver.exe’)

让浏览器发起一个指定url对应的请求

bro.get(‘http://scxk.nmpa.gov.cn:81/xk/’)

page_source获取浏览器当前页面的页面源码数据

page_text = bro.page_source

解析企业名称

tree = etree.HTML(page_text)

li_list = tree.xpath(‘//ul[@id=“gzlist”]/li’)

for li in li_list:

name = li.xpath(‘./dl/@title’)[0]

print(name)

关闭浏览器(等待5秒)

sleep(5)

bro.quit()

4、编写基于浏览器自动化的操作代码

  • 发起请求:get(url)

  • 标签定位:find系列的方法

  • 标签交互:send_keys(‘xxx’)

  • 执行js程序:excute_script(‘jsCode’)

  • 前进、后退:back(), forward()

  • 关闭浏览器:quit()

from selenium import webdriver

from time import sleep

导入动作链对应的类

from selenium.webdriver import ActionChains

bro = webdriver.Chrome(executable_path=‘./chromedriver.exe’)

bro.get(‘https://www.taobao.com/’)

标签定位

search_input = bro.find_element_by_id(‘q’)

标签交互

search_input.send_keys(‘Iphone’)

执行一组JS程序

bro.execute_script(‘window.scrollTo(0,document.body.scrollHeight)’)

sleep(2)

点击搜索按钮

bro.find_element_by_css_selector(‘.btn-search tb-bg’)

bro.click()

bro.get(‘https://www.baidu.com’)

sleep(2)

回退

bro.back()

sleep(2)

前进

bro.forward()

sleep(5)

bro.quit()


5、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()释放动作链对象

导包

from selenium import webdriver

from time import sleep

导入动作链对应的类

from selenium.webdriver import ActionChains

bro = webdriver.Chrome(executable_path=‘./chromedriver.exe’)

让浏览器发起一个指定url对应的请求

bro.get(‘https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable’)

如果定位的标签是存在于iframe标签之中的则必须通过如下操作在进行标签定位

bro.switch_to_frame(‘iframeResult’) # 切换浏览器标签定位的作用域

div = bro.find_element_by_id(‘draggable’)

动作链

action = ActionChains(bro)

点击长按指定的标签

action.click_and_hold(div)

perform()立即执行动作链操作、move_by_offset(x,y) : x水平方向 y竖直方向

for i in range(5):

action.move_by_offset(17, 0).perform()

sleep(0.5)

释放动作链

action.release()

关闭

bro.quit()

完整代码:

from selenium import webdriver

from time import sleep

导入动作链对应的类

from selenium.webdriver import ActionChains

实例化一个浏览器对象(传入浏览器的驱动程序)

bro = webdriver.Chrome(executable_path=‘./chromedriver.exe’)

让浏览器发起一个指定url对应的请求

bro.get(‘http://scxk.nmpa.gov.cn:81/xk/’)

如果定位的标签是存在于iframe标签之中的则必须通过如下操作在进行标签定位

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):

perform()立即执行动作链操作

move_by_offset(x,y) : x水平方向 y竖直方向

action.move_by_offset(17, 0).perform()

sleep(0.5)

释放动作链

action.release()

bro.quit()


模拟登录网页版QQ空间


from selenium import webdriver

from time import sleep

bro = webdriver.Chrome(executable_path=‘./chromedriver1.exe’)

让浏览器发起一个指定url对应的请求

bro.get(‘https://qzone.qq.com/’)

如果定位的标签是存在于iframe标签之中的则必须通过如下操作在进行标签定位

bro.switch_to_frame(‘login_frame’) # 切换浏览器标签定位的作用域

a_tag = bro.find_element_by_id(‘switcher_plogin’)

a_tag.click()

找到用户名和密码的标签

username_tag = bro.find_element_by_id(‘u’)

password_tag = bro.find_element_by_id(‘p’)

输入账号

username_tag.send_keys(‘631284465’)

sleep(1)

输入密码(不敢用真密码…)

password_tag.send_keys(‘123456789’)

sleep(1)

点击登录

btn = bro.find_element_by_id(‘login_button’)

btn.click()

sleep(3)

退出浏览器

bro.quit()

其实类似的,可以用selenium做一个自动抢课程序!!!


无头浏览器


from selenium import webdriver

from time import sleep

from selenium.webdriver.chrome.options import Options

chrome_options = Options()

chrome_options.add_argument(‘–headless’)

chrome_options.add_argument(‘–disable-gpu’)

bro = webdriver.Chrome(executable_path=‘./chromedriver1.exe’, chrome_options=chrome_options)

无可视化界面(无头浏览器)

bro.get(‘https://www.baidu.com’)

print(bro.page_source)

sleep(2)

bro.quit()


无头浏览器+规避检测


from webbrowser import Chrome

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’])

如何实现让selenium规避被检测到的风险

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。

image

上述的面试题答案都整理成文档笔记。 也还整理了一些面试资料&最新2021收集的一些大厂的面试真题(都整理成文档,小部分截图)

image

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!
阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!**

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。

[外链图片转存中…(img-XKZM0Zh4-1711811887778)]

上述的面试题答案都整理成文档笔记。 也还整理了一些面试资料&最新2021收集的一些大厂的面试真题(都整理成文档,小部分截图)

[外链图片转存中…(img-IuiPXse6-1711811887779)]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

  • 15
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值