Python爬虫08-selenium案例

selenium案例

  • 一、操作Cookie
    • 1.1 获取百度的cookie
    • 1.2 模拟登录QQ空间
  • 二、页面等待
    • 2.1 强制等待
    • 2.2 隐式等待
    • 2.3 显式等待
  • 三、打开多窗口和切换页面

一、操作Cookie

1.1 获取百度的cookie

from selenium import webdriver

driver=webdriver.Chrome()
driver.get('https://www.baidu.com/')
# 获取所有的cookie
cookies = driver.get_cookies()
for cookie in cookies:
    print(cookie)
# 根据cookie的name获取cookie
print(driver.get_cookie('BD_HOME'))
# 删除cookie
driver.delete_cookie('BD_HOME')

1.2 模拟登录QQ空间

from selenium import webdriver
import json
import requests
import time
driver=webdriver.Chrome()
driver.get('https://xui.ptlogin2.qq.com/cgi-bin/xlogin?proxy_url=https%3A//qzs.qq.com/qzone/v6/portal/proxy.html&daid=5&&hide_title_bar=1&low_login=0&qlogin_auto_login=1&no_verifyimg=1&link_target=blank&appid=549000912&style=22&target=self&s_url=https%3A%2F%2Fqzs.qzone.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone&pt_qr_app=手机QQ空间&pt_qr_link=http%3A//z.qzone.com/download.html&self_regurl=https%3A//qzs.qq.com/qzone/v6/reg/index.html&pt_qr_help_link=http%3A//z.qzone.com/download.html&pt_no_auth=0')
button=driver.find_element_by_class_name('img_out_focus')
button.click()
time.sleep(3)
current_url=driver.current_url  # QQ空间的url
# 获取cookie值 (通过cookie可以模拟登陆)
cookie = driver.get_cookies()
# 转换cookie值的类型为json
josn_cookie=json.dumps(cookie)
# 将数据保存到一个json文件中
with open('qqzone.josn','w') as f:
    f.write(josn_cookie)
# 将读取的josn文件转换为python文件
with open('qqzone.josn','r',encoding='utf-8') as f:
    load_cookie=json.loads(f.read())
# 拼接完整的cookie
cookie=[i['name'] + '=' + i['value'] for i in load_cookie]
cookie_str='; '.join(s for s in cookie)
url=current_url
headers={
     'cookie':cookie_str,'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'}
html=requests.get(url,headers=headers)
print(html.text)

二、页面等待

2.1 强制等待

import time
time.sleep(2)

2.2 隐式等待

driver.implicitly_wait(5)

2.3 显式等待

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 = webdriver.Chrome()
driver.get("https://www.baidu.com/")

try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "myDynamicElement"))
 )
finally:
    driver.quit()

三、打开多窗口和切换页面

from selenium import webdriver
import time
driver=webdriver.Chrome()

同时打开百度和豆瓣

driver.get('https://www.baidu.com/')   # 当前窗口
driver.execute_script('window.open("https://www.douban.com/")')
# 切换窗口
driver.switch_to.window(driver.window_handles[1])
# 关闭当前窗口
driver.close()
# 退出驱动,关闭所有窗口
driver.quit()

你可能感兴趣的:(Python爬虫,python,selenium)