4

python爬虫-29-selenium进阶操作,还不赶紧收藏起来

 1 year ago
source link: https://blog.51cto.com/u_12386780/5390468
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

python爬虫-29-selenium进阶操作,还不赶紧收藏起来

原创

公号运维家 2022-06-17 09:57:31 ©著作权

文章标签 linux chrome 显式 文章分类 Linux 系统/运维 阅读数154

python爬虫-29-selenium进阶操作,还不赶紧收藏起来_linux

1、selenium的cookie相关操作

有时候我们需要通过获取​​cookie​​​来进行一些别的操作,这个时候我们如何对​​cookie​​进行相关操作呢?

1.1、获取​​cookie​

from selenium import webdriver

Driver_path = r'C:\Users\22768\Desktop\python\chromedriver.exe'
driver = webdriver.Chrome(executable_path=Driver_path)
driver.get('http://www.baidu.com')
driver.maximize_window()
# 获取所有的cookie
for cookie in driver.get_cookies():
print(cookie)

运行之后结果如下:

{'domain': '.baidu.com', 'expiry': 16811342, 'httpOnly': False, 'name': 'ZFY', 'path': '/', 'sameSite': 'None', 'secure': True, 'value': '9QxCBgH829qdcrDuX9xiaBy2v0rc2HrjgxLAxEA:C'}
{'domain': '.baidu.com', 'expiry': , 'httpOnly': False, 'name': 'BA_HECTOR', 'path': '/', 'secure': False, 'value': '080100ag050k00c1a0lsf15'}
{'domain': '.baidu.com', 'httpOnly': False, 'name': 'H_PS_PSSID', 'path': '/', 'secure': False, 'value': '36546_36454_316514_34813_36569_36530_36519_26350_36299_36469_36311'}
{'domain': '.baidu.com', 'expiry': 1681341, 'httpOnly': False, 'name': 'BAIDUID', 'path': '/', 'secure': False, 'value': '045AD49199B30BD52253537FA2B1:FG=1'}
{'domain': '.baidu.com', 'expiry': 3802988, 'httpOnly': False, 'name': 'BIDUPSID', 'path': '/', 'secure': False, 'value': '045AD49199B30BD5514A9B616E393'}
{'domain': '.baidu.com', 'expiry': 38058988, 'httpOnly': False, 'name': 'PSTM', 'path': '/', 'secure': False, 'value': '16575340'}
{'domain': 'www.baidu.com', 'expiry': 165342, 'httpOnly': False, 'name': 'BD_UPN', 'path': '/', 'secure': False, 'value': '124753'}
{'domain': 'www.baidu.com', 'httpOnly': False, 'name': 'BD_HOME', 'path': '/', 'secure': False, 'value': '1'}

1.2、获取某一个​​cookie​

from selenium import webdriver

Driver_path = r'C:\Users\22768\Desktop\python\chromedriver.exe'
driver = webdriver.Chrome(executable_path=Driver_path)
driver.get('http://www.baidu.com')
driver.maximize_window()
# 获取单个cookie
print(driver.get_cookie('PSTM'))

1.3、删除所有的​​cookie​

driver.delete_all_cookies()

1.4、删除某个​​cookie​

driver.delete_cookie(key)

2、selenium的页面等待

什么是页面等待,为什么要有一个页面等待呢,你想一下哈,当你访问某个网站的时候,他是不是需要有一个加载的过程,那么如果在加载过程中你就去获取某个元素,或者某个​​XPATH​​路径了,那么他是肯定无法获取到的;

但是呢,本身这个网站是存在相关数据的,只是因为没有加载完全,从而导致的该问题,那有同学说了,我们可以通过​​time.sleep​​​的方式,让他休眠一会儿,然后我们再次获取啊,对,这种方式是没问题的,但是多长时间合适呢,这样子你的时间就固话了对吧,其他​​selenium​​是提供了这个方法的;

逻辑就是在你规定的时间内,一直检测该元素是否出现,如果出现了,就直接运行后面的内容,如果在你指定的最大超时时间里面依旧没有出现,那么就返回错误,​​selenium​​将这块内容分成了两块,一个是显式等待,一个是隐式等待

那么​​selenium​​的显式等待和隐式等待有什么区别呢,我觉得最大的区别在于:显式等待作用于指定元素,隐式等待作用于全局

显式等待:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

Driver_path = r'C:\Users\22768\Desktop\python\chromedriver.exe'
driver = webdriver.Chrome(executable_path=Driver_path)

driver.get("https://www.baidu.com")
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, '//*[@id="kw"]'))
)
except:
driver.quit()

以上代码的意思是,如果​​10s​​内,没有检索到百度的输入框,则退出该浏览器,这个是指定了某一个元素进行的等待,他叫做显式等待;

隐式等待:

剩余内容请转至VX公众号 “运维家” ,回复 “190” 查看。

------ “运维家” ,回复 “190”  ------

------ “运维家” ,回复 “190”  ------

------ “运维家” ,回复 “190”  ------

linux进不去,瑞星forlinux,cowlinux,linux中暂停进程,linux应用开发百度云,linux打开dmp文件;

linux查看ip的代码,查看linux端口绑定状态,linux下dhcp安装失败,linux下怎么打开sv文件;

linux域名控制,zynqtcplinux,linux突然不能访问,linux找不到内核镜像,linux设频命令;

linux上下左右变成a,linuxc计算器,linuxsnmp技术原理,linuxc网络,linux移动操作。

  • 收藏
  • 评论
  • 分享
  • 举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK