02_selenium 的各种操作

# 目标:拉钩网的招聘信息
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys # 有键盘上所有键
import time

web = Chrome()
web.get("https://www.lagou.com/")

# 找到页面中的X,点击它
x_btn = web.find_element(By.XPATH, '//*[@id="cboxClose"]') # 根据xpath定位页面元素,copy xpath 只能在selenium环境下放心大胆的用。
x_btn.click() # click 点击

time.sleep(1)
# 干掉不需要的遮挡的,selenium 可以动态执行js execute_script 执行脚本
web.execute_script("""
var a = document.getElementsByClassName("un-login-banner")[0];
a.parentNode.removeChild(a);
""")

# 休息一下下
time.sleep(4)

# Message: element not interactable 报错,你当前选择的框框不能被选择
# 找到 输入框。 "输入 python 回车" 或者 "输入 python 点击收索" 解决办法,前一行代码写 time.sleep(1)
web.find_element(By.XPATH, '//*[@id="search_input"]').send_keys('python', Keys.ENTER) # 输入多项内容('python','java', 'xxx' Keys.ENTER)


time.sleep(2)
# 数据提取
# 找到一个整体的div,复制div的xpath //*[@id="jobList"]/div[1]/div[1] 拿到div_list 就是 //*[@id="jobList"]/div[1]/div 去掉后面的[1]
div_list = web.find_elements(By.XPATH, '//*[@id="jobList"]/div[1]/div')
for i in div_list:
h3 = i.find_element(By.XPATH, '//*[@id="openWinPostion"]')
h3.click()
# 此时,在浏览器这边。我们看到的内容已经是详情页的内容了。
# 但是,在selenium的眼中,我们依然在首页
# 所以,必须得让selenium去调整它的视角
# 切换窗口 switch 选择 parent_frame 切换到尚层结构
web.switch_to.window(web.window_handles[-1])
job_detail = web.find_element(By.XPATH, '//*[@id="job_detail"]/dd[2]')
txt = job_detail.text
print(txt)
time.sleep(1) # 节奏慢一点

# 关闭窗口
web.close()

# 调整 selenium 视角
web.switch_to.window(web.window_handles[0])
web.quit() # 关闭浏览器

posted @ 2023-08-03 22:36  严永富  阅读(8)  评论(0)    收藏  举报