-
下载路径: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()
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开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://i-blog.csdnimg.cn/blog_migrate/913a2c19e3430d399581fffcc00bb699.jpeg)
最后
针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。
上述的面试题答案都整理成文档笔记。 也还整理了一些面试资料&最新2021收集的一些大厂的面试真题(都整理成文档,小部分截图)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!
阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!**
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://i-blog.csdnimg.cn/blog_migrate/913a2c19e3430d399581fffcc00bb699.jpeg)
最后
针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。
[外链图片转存中…(img-XKZM0Zh4-1711811887778)]
上述的面试题答案都整理成文档笔记。 也还整理了一些面试资料&最新2021收集的一些大厂的面试真题(都整理成文档,小部分截图)
[外链图片转存中…(img-IuiPXse6-1711811887779)]
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!